omninode-memory 0.6.4__tar.gz → 0.6.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- omninode_memory-0.6.6/.github/workflows/build-and-push-migrate-image.yml +42 -0
- omninode_memory-0.6.6/.github/workflows/contract-validation.yml +135 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/workflows/test.yml +6 -6
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.pre-commit-config.yaml +23 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/PKG-INFO +4 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +13 -3
- omninode_memory-0.6.6/deployment/docker/Dockerfile.migrate +16 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/handler_reuse_matrix.md +0 -5
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/pyproject.toml +4 -4
- omninode_memory-0.6.6/scripts/check_no_hardcoded_bolt.sh +31 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validate_no_transport_imports.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/check_ai_slop.py +0 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_http_imports.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_kafka_imports.py +1 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_model_locations.py +6 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_naming.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/__init__.py +7 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/__init__.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/__init__.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +3 -3
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +3 -3
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/handler_intent.py +3 -3
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/models/model_handler_intent_config.py +7 -7
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/nodes/__init__.py +20 -20
- {omninode_memory-0.6.4/src/omnimemory/nodes/agent_coordinator_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_agent_coordinator_orchestrator}/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/agent_coordinator_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_agent_coordinator_orchestrator}/contract.yaml +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/agent_coordinator_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_agent_coordinator_orchestrator}/models/model_request.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/agent_coordinator_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_agent_coordinator_orchestrator}/models/model_response.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_filesystem_crawler_effect}/__init__.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_filesystem_crawler_effect}/contract.yaml +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_filesystem_crawler_effect}/handler_filesystem_crawler.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_filesystem_crawler_effect}/models/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/contract.yaml +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/handler_intent_event_consumer.py +7 -7
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/models/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/utils/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/utils/util_event_mapper.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/__init__.py +8 -6
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/contract.yaml +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/handlers/__init__.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/handlers/handler_intent_query.py +7 -7
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/models/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/models/model_handler_intent_query_config.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/registry/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/registry/registry_intent_query_effect.py +13 -9
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/utils/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_query_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_query_effect}/utils/util_intent_mapping.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/adapters/adapter_intent_storage.py +4 -4
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/contract.yaml +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/contract.yaml +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/handler_kreuzberg_parse.py +5 -5
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/models/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/adapters/__init__.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/adapters/adapter_postgres_deactivate_memory.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/adapters/adapter_runtime_tick_memory.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/contract.yaml +6 -6
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/handlers/__init__.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/handlers/handler_memory_archive.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/handlers/handler_memory_expire.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/validators/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/clients/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/clients/embedding_client.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/contract.yaml +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/handlers/handler_db_mock.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/handlers/handler_graph_mock.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/handlers/handler_memory_retrieval.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/handlers/handler_qdrant_mock.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_memory_retrieval_request.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_memory_retrieval_response.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/adapters/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/adapters/adapter_filesystem.py +7 -7
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/contract.yaml +5 -5
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/models/model_memory_storage_request.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/models/model_memory_storage_response.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/__init__.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/handlers/handler_navigation_history_reducer.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/models/model_navigation_history_request.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/node_navigation_history_reducer.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/__init__.py +4 -4
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/contract.yaml +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/handlers/__init__.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/handlers/handler_semantic_compute.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/node_semantic_analyzer_compute.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/__init__.py +4 -4
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/contract.yaml +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/handlers/__init__.py +3 -3
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/handlers/handler_similarity_compute.py +2 -2
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/models/model_similarity_compute_request.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/models/model_similarity_compute_response.py +1 -1
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/node_similarity_compute.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/protocol_handler_intent.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/contract_topics.py +13 -11
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/dispatch_handlers.py +5 -3
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/introspection.py +9 -9
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/message_type_registration.py +10 -10
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/plugin.py +73 -6
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/wiring.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/audit/io_audit_whitelist.yaml +5 -5
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/audit/transport_import_whitelist.yaml +5 -5
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/conftest.py +8 -8
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/nodes/test_kreuzberg_parse_effect.py +4 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/nodes/test_navigation_history_reducer_integration.py +4 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/test_handler_lifecycle_pattern.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/test_node_agent_coordinator.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/models/test_frozen_boundary_models.py +2 -2
- {omninode_memory-0.6.4/tests/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/tests/nodes/node_filesystem_crawler_effect}/test_handler_filesystem_crawler.py +3 -3
- {omninode_memory-0.6.4/tests/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/tests/nodes/node_intent_event_consumer_effect}/test_handler_intent_event_consumer.py +3 -3
- {omninode_memory-0.6.4/tests/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/tests/nodes/node_intent_event_consumer_effect}/test_model_consumer_health.py +1 -1
- {omninode_memory-0.6.4/tests/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/tests/nodes/node_intent_event_consumer_effect}/test_util_event_mapper.py +1 -1
- {omninode_memory-0.6.4/tests/nodes/intent_query_effect → omninode_memory-0.6.6/tests/nodes/node_intent_query_effect}/test_handler_intent_query_integration.py +45 -31
- {omninode_memory-0.6.4/tests/nodes/intent_storage_effect → omninode_memory-0.6.6/tests/nodes/node_intent_storage_effect}/test_handler_intent_storage_adapter_integration.py +2 -2
- {omninode_memory-0.6.4/tests/nodes/memory_retrieval_effect → omninode_memory-0.6.6/tests/nodes/node_memory_retrieval_effect}/test_memory_retrieval_effect.py +4 -4
- {omninode_memory-0.6.4/tests/nodes/memory_storage_effect → omninode_memory-0.6.6/tests/nodes/node_memory_storage_effect}/test_memory_storage_effect.py +3 -3
- {omninode_memory-0.6.4/tests/nodes/navigation_history_reducer → omninode_memory-0.6.6/tests/nodes/node_navigation_history_reducer}/test_navigation_history_reducer_unit.py +3 -3
- {omninode_memory-0.6.4/tests/nodes/similarity_compute → omninode_memory-0.6.6/tests/nodes/node_similarity_compute}/test_similarity_compute.py +4 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_contract_version.py +20 -12
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_node_imports.py +4 -4
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +5 -5
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +2 -2
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +1 -1
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_contract_topics.py +23 -22
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_message_type_registration.py +16 -16
- omninode_memory-0.6.6/tests/unit/runtime/test_plugin_memory_validate_handshake.py +44 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_validate_ci_precommit_alignment.py +2 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/uv.lock +38 -27
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.claude/architecture-handshake.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.env.example +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.flake8 +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/dependabot.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/required-checks.yaml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/workflows/auto-tag-on-merge.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/workflows/pre-commit.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/workflows/release-dry-run.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.github/workflows/release.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.gitignore +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.secrets.baseline +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.serena/memories/project_overview.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.serena/memories/suggested_commands.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.serena/project.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/.yamlfmt +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/CHANGELOG.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/CLAUDE.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/CODE_OF_CONDUCT.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/CONTRIBUTING.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/LICENSE +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/README.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/SECURITY.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/contract.yaml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/migrations/002_create_memories_table.sql +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docker-compose.prod.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docker-compose.yml +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/INDEX.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/PERFORMANCE_TESTING.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/architecture/ARCH_002_KAFKA_ABSTRACTION.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/architecture/ONEX_FOUR_NODE_ARCHITECTURE.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/ci/CI_MONITORING_GUIDE.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/db-split/fk-audit-omn-2069.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/environment_variables.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/pii_handling.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/runtime/RUNTIME_PLUGINS.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/docs/stub_protocols.md +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/examples/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/examples/advanced_architecture_demo.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/pyrightconfig.json +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/check_migration_freeze.sh +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validate_ci_precommit_alignment.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_enum_casing.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_no_backward_compatibility.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_pydantic_patterns.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_secrets.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_single_class_per_file.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/_compat_imports.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/audit/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/audit/__main__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/audit/io_audit.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/bootstrap.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/crawl/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_context_item_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_data_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_error_code.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_migration_status.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_node_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_operation_status.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_priority_level.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_severity.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_subscription_status.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/enums/enum_trust_level.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/errors/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/errors/embedding_errors.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/handler_subscription.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/models/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_embedding_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_postgres_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/container/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/contracts/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_memory_context.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_memory_request.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_memory_response.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/core/model_provenance.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_crawl_state_record.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/crawl/types.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/events/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_configuration.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_error_details.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_health_response.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_notes.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_priority.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_semver.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_system_health.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_tags.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/foundation/model_user.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/intelligence/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/memory/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/memory/model_memory_item.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/memory/model_memory_query.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/scoring/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/service/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/service/model_service_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/service/model_service_health.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/service/model_service_registry.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/subscription/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/subscription/constants.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/subscription/model_subscription.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_audit.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_concurrency.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_health_status.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_pii_match.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_pii_type.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_retry_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/models/utils/model_system_health.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/nodes/base.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/agent_coordinator_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_agent_coordinator_orchestrator}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_filesystem_crawler_effect}/models/model_filesystem_crawl_result.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_filesystem_crawler_effect}/models/model_filesystem_crawler_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/models/model_consumer_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_event_consumer_effect}/models/model_consumer_health.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/adapters/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/models/model_intent_storage_request.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/intent_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_intent_storage_effect}/models/model_intent_storage_response.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/clients/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/clients/client_kreuzberg.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/models/model_kreuzberg_parse_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/kreuzberg_parse_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_kreuzberg_parse_effect}/models/model_kreuzberg_parse_result.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_consolidator_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_consolidator_reducer}/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/handlers/handler_memory_tick.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_lifecycle_orchestrator → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_lifecycle_orchestrator}/validators/validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/handlers/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_embedding_client_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_handler_db_mock_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_handler_graph_mock_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_handler_memory_retrieval_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_retrieval_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_retrieval_effect}/models/model_handler_qdrant_mock_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/memory_storage_effect → omninode_memory-0.6.6/src/omnimemory/nodes/node_memory_storage_effect}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/handlers/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/models/model_navigation_history_response.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/navigation_history_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_navigation_history_reducer}/models/model_navigation_session.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/models/model_semantic_analyzer_compute_request.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/semantic_analyzer_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_semantic_analyzer_compute}/models/model_semantic_analyzer_compute_response.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/models/__init__.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/similarity_compute → omninode_memory-0.6.6/src/omnimemory/nodes/node_similarity_compute}/models/model_handler_similarity_compute_config.py +0 -0
- {omninode_memory-0.6.4/src/omnimemory/nodes/statistics_reducer → omninode_memory-0.6.6/src/omnimemory/nodes/node_statistics_reducer}/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/base_protocols.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/data_models.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/error_models.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/protocol_crawl_state_repository.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/protocol_embedding.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/runtime/adapters.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/secrets.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/settings.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/tools/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/tools/contract_linter.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/tools/stubs/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/tools/stubs/contract_validator.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/audit_logger.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/concurrency.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/db_url.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/error_sanitizer.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/handler_constants.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/health_manager.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/observability.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/pii_detector.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/resource_manager.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/utils/retry_utils.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/test_handler_intent.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/handlers/test_handler_semantic_compute.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/conftest.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/nodes/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/test_entry_point_discovery.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/integration/test_handler_subscription.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/models/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/models/contracts/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/models/contracts/test_extended_contracts.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/models/events/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/models/events/test_model_intent_classified_event.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/nodes/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/filesystem_crawler_effect → omninode_memory-0.6.6/tests/nodes/node_filesystem_crawler_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/intent_event_consumer_effect → omninode_memory-0.6.6/tests/nodes/node_intent_event_consumer_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/intent_query_effect → omninode_memory-0.6.6/tests/nodes/node_intent_query_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/intent_query_effect → omninode_memory-0.6.6/tests/nodes/node_intent_query_effect}/conftest.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/intent_storage_effect → omninode_memory-0.6.6/tests/nodes/node_intent_storage_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/memory_retrieval_effect → omninode_memory-0.6.6/tests/nodes/node_memory_retrieval_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/memory_storage_effect → omninode_memory-0.6.6/tests/nodes/node_memory_storage_effect}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/navigation_history_reducer → omninode_memory-0.6.6/tests/nodes/node_navigation_history_reducer}/__init__.py +0 -0
- {omninode_memory-0.6.4/tests/nodes/similarity_compute → omninode_memory-0.6.6/tests/nodes/node_similarity_compute}/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_bootstrap.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_concurrency.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_config_models.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_contract_validation.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_db_url.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_foundation.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_health_manager.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_migration_progress.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_node_enforcement.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_observability_metrics.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_performance.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_resource_manager.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_secrets_provider.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_settings.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/test_validation_scripts.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/handlers/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/handlers/test_subscription_typing.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/__init__.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/conftest.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_adapters.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_dispatch_handlers.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_introspection.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_plugin.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/runtime/test_wiring.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_contract_linter.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_ingestion_models.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_io_audit.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_scope_mapping_config.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_sql_placeholders.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_validate_kafka_imports.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/tests/unit/test_validate_no_transport_imports.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/validate_architecture_improvements.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/validate_foundation.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/validate_foundation_isolated.py +0 -0
- {omninode_memory-0.6.4 → omninode_memory-0.6.6}/validate_foundation_minimal.py +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2026 OmniNode Team
|
|
3
|
+
name: Build and push migration image to ECR
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- 'deployment/docker/Dockerfile.migrate'
|
|
9
|
+
- 'deployment/database/migrations/**'
|
|
10
|
+
- '.github/workflows/build-and-push-migrate-image.yml'
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
concurrency:
|
|
13
|
+
group: build-migrate-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: false
|
|
15
|
+
permissions:
|
|
16
|
+
id-token: write
|
|
17
|
+
contents: read
|
|
18
|
+
env:
|
|
19
|
+
AWS_REGION: us-east-1
|
|
20
|
+
ECR_REGISTRY: ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.us-east-1.amazonaws.com
|
|
21
|
+
ECR_REPOSITORY: omnimemory-migrate
|
|
22
|
+
jobs:
|
|
23
|
+
build-and-push:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 15
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: aws-actions/configure-aws-credentials@v4
|
|
29
|
+
with:
|
|
30
|
+
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT_ID }}:role/omninode-github-actions-role
|
|
31
|
+
role-session-name: gha-build-migrate-omnimemory
|
|
32
|
+
aws-region: ${{ env.AWS_REGION }}
|
|
33
|
+
- run: aws sts get-caller-identity
|
|
34
|
+
- uses: aws-actions/amazon-ecr-login@v2
|
|
35
|
+
- name: Build and push
|
|
36
|
+
env:
|
|
37
|
+
IMAGE_URI: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}
|
|
38
|
+
COMMIT_SHA: ${{ github.sha }}
|
|
39
|
+
run: |
|
|
40
|
+
docker build -f deployment/docker/Dockerfile.migrate -t "${IMAGE_URI}:${COMMIT_SHA}" -t "${IMAGE_URI}:latest" .
|
|
41
|
+
docker push "${IMAGE_URI}:${COMMIT_SHA}"
|
|
42
|
+
docker push "${IMAGE_URI}:latest"
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
# Contract Validation Gate
|
|
5
|
+
#
|
|
6
|
+
# Validates ONEX ticket contracts for PRs in omnimemory using the
|
|
7
|
+
# reusable composite action from onex_change_control.
|
|
8
|
+
#
|
|
9
|
+
# Required status check: "contract-validation"
|
|
10
|
+
# Must pass (or skip) before merging to main.
|
|
11
|
+
#
|
|
12
|
+
# The validation is intentionally lenient on missing contracts:
|
|
13
|
+
# - If branch name has no OMN-XXXX ticket ID → skipped
|
|
14
|
+
# - If contracts/<ticket_id>.yaml does not exist → skipped
|
|
15
|
+
# - If contract file exists but fails schema validation → fails
|
|
16
|
+
#
|
|
17
|
+
# This prevents blocking PRs that legitimately have no contract
|
|
18
|
+
# (e.g., dependency bumps, docs-only changes) while enforcing schema
|
|
19
|
+
# correctness when a contract is present.
|
|
20
|
+
|
|
21
|
+
name: Contract Validation
|
|
22
|
+
|
|
23
|
+
on:
|
|
24
|
+
pull_request:
|
|
25
|
+
branches: [main, develop]
|
|
26
|
+
merge_group:
|
|
27
|
+
workflow_dispatch:
|
|
28
|
+
inputs:
|
|
29
|
+
branch-name:
|
|
30
|
+
description: "Branch name to validate contracts for (defaults to current branch)"
|
|
31
|
+
required: false
|
|
32
|
+
default: ""
|
|
33
|
+
|
|
34
|
+
# Allow concurrent runs on different PRs; cancel stale runs on the same ref
|
|
35
|
+
concurrency:
|
|
36
|
+
group: contract-validation-${{ github.ref }}
|
|
37
|
+
cancel-in-progress: true
|
|
38
|
+
|
|
39
|
+
jobs:
|
|
40
|
+
contract-validation:
|
|
41
|
+
name: contract-validation
|
|
42
|
+
# OMNINODE_SELF_HOSTED_RUNS_ON_V1 — do not edit inline; update plan + all occurrences together
|
|
43
|
+
runs-on: >-
|
|
44
|
+
${{
|
|
45
|
+
(vars.USE_SELF_HOSTED_RUNNERS == 'true' &&
|
|
46
|
+
(github.event_name == 'push' ||
|
|
47
|
+
github.event_name == 'workflow_dispatch' ||
|
|
48
|
+
github.event_name == 'schedule'))
|
|
49
|
+
&& fromJSON('["self-hosted","omnibase-ci"]')
|
|
50
|
+
|| fromJSON('["ubuntu-latest"]')
|
|
51
|
+
}}
|
|
52
|
+
timeout-minutes: 10
|
|
53
|
+
|
|
54
|
+
steps:
|
|
55
|
+
- name: Auth preflight — confirm onex_change_control action is accessible
|
|
56
|
+
id: auth-preflight
|
|
57
|
+
env:
|
|
58
|
+
GH_TOKEN: ${{ github.token }}
|
|
59
|
+
run: |
|
|
60
|
+
echo "Checking visibility of OmniNode-ai/onex_change_control..."
|
|
61
|
+
if gh api repos/OmniNode-ai/onex_change_control --silent; then
|
|
62
|
+
echo "::notice::onex_change_control repo is accessible."
|
|
63
|
+
else
|
|
64
|
+
echo "::error::Cannot reach OmniNode-ai/onex_change_control. Composite action will not resolve."
|
|
65
|
+
exit 1
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
- name: Resolve branch name
|
|
69
|
+
id: resolve-branch
|
|
70
|
+
env:
|
|
71
|
+
WORKFLOW_INPUT_BRANCH: ${{ inputs.branch-name }}
|
|
72
|
+
GITHUB_HEAD_REF: ${{ github.head_ref }}
|
|
73
|
+
GITHUB_REF_NAME: ${{ github.ref_name }}
|
|
74
|
+
EVENT_NAME: ${{ github.event_name }}
|
|
75
|
+
run: |
|
|
76
|
+
# merge_group events run on gh-readonly-queue/... branches with no PR head ref.
|
|
77
|
+
# Contract validation is not meaningful in this context — skip immediately.
|
|
78
|
+
if [[ "$EVENT_NAME" == "merge_group" ]]; then
|
|
79
|
+
echo "resolved_branch=" >> "$GITHUB_OUTPUT"
|
|
80
|
+
echo "skip_validation=true" >> "$GITHUB_OUTPUT"
|
|
81
|
+
echo "::notice::merge_group event — contract validation skipped (validated on PR branch instead)."
|
|
82
|
+
exit 0
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
echo "skip_validation=false" >> "$GITHUB_OUTPUT"
|
|
86
|
+
|
|
87
|
+
# Prefer workflow_dispatch input, then PR head ref, then ref name
|
|
88
|
+
if [[ -n "$WORKFLOW_INPUT_BRANCH" ]]; then
|
|
89
|
+
BRANCH="$WORKFLOW_INPUT_BRANCH"
|
|
90
|
+
elif [[ -n "$GITHUB_HEAD_REF" ]]; then
|
|
91
|
+
BRANCH="$GITHUB_HEAD_REF"
|
|
92
|
+
else
|
|
93
|
+
BRANCH="$GITHUB_REF_NAME"
|
|
94
|
+
fi
|
|
95
|
+
echo "resolved_branch=$BRANCH" >> "$GITHUB_OUTPUT"
|
|
96
|
+
echo "::notice::Resolved branch name: $BRANCH"
|
|
97
|
+
|
|
98
|
+
- name: Run contract validation
|
|
99
|
+
id: validate-contract
|
|
100
|
+
if: steps.resolve-branch.outputs.skip_validation != 'true'
|
|
101
|
+
uses: OmniNode-ai/onex_change_control/.github/actions/validate-contract@main
|
|
102
|
+
with:
|
|
103
|
+
branch-name: ${{ steps.resolve-branch.outputs.resolved_branch }}
|
|
104
|
+
contracts-path: contracts
|
|
105
|
+
|
|
106
|
+
- name: Report validation result
|
|
107
|
+
if: always()
|
|
108
|
+
env:
|
|
109
|
+
TICKET_ID: ${{ steps.validate-contract.outputs.ticket-id }}
|
|
110
|
+
VALIDATION_STATUS: ${{ steps.validate-contract.outputs.validation-status }}
|
|
111
|
+
SKIP_VALIDATION: ${{ steps.resolve-branch.outputs.skip_validation }}
|
|
112
|
+
run: |
|
|
113
|
+
if [[ "$SKIP_VALIDATION" == "true" ]]; then
|
|
114
|
+
echo "::notice::Contract validation SKIPPED — merge_group event."
|
|
115
|
+
exit 0
|
|
116
|
+
fi
|
|
117
|
+
case "$VALIDATION_STATUS" in
|
|
118
|
+
passed)
|
|
119
|
+
echo "::notice::Contract validation PASSED for ticket $TICKET_ID"
|
|
120
|
+
;;
|
|
121
|
+
skipped)
|
|
122
|
+
if [[ -z "$TICKET_ID" ]]; then
|
|
123
|
+
echo "::notice::Contract validation SKIPPED — no OMN-XXXX ticket ID found in branch name."
|
|
124
|
+
else
|
|
125
|
+
echo "::notice::Contract validation SKIPPED — no contract file found for $TICKET_ID in contracts/."
|
|
126
|
+
fi
|
|
127
|
+
;;
|
|
128
|
+
failed)
|
|
129
|
+
echo "::error::Contract validation FAILED for ticket $TICKET_ID. See validate-contract step for details."
|
|
130
|
+
exit 1
|
|
131
|
+
;;
|
|
132
|
+
*)
|
|
133
|
+
echo "::warning::Unexpected validation status: '$VALIDATION_STATUS'. Treating as skipped."
|
|
134
|
+
;;
|
|
135
|
+
esac
|
|
@@ -107,7 +107,7 @@ jobs:
|
|
|
107
107
|
uses: astral-sh/setup-uv@v7
|
|
108
108
|
|
|
109
109
|
- name: Install dependencies
|
|
110
|
-
run: uv sync
|
|
110
|
+
run: uv sync --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
111
111
|
|
|
112
112
|
# SYNC: Pre-commit hook 'ruff-format' at pre-commit stage
|
|
113
113
|
# Both pre-commit and CI use --check for consistent validation
|
|
@@ -138,7 +138,7 @@ jobs:
|
|
|
138
138
|
uses: astral-sh/setup-uv@v7
|
|
139
139
|
|
|
140
140
|
- name: Install dependencies
|
|
141
|
-
run: uv sync
|
|
141
|
+
run: uv sync --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
142
142
|
|
|
143
143
|
# SYNC: Pre-commit hook 'pyright-type-check' at pre-push stage
|
|
144
144
|
# Uses pyrightconfig.json for project-level settings
|
|
@@ -159,7 +159,7 @@ jobs:
|
|
|
159
159
|
uses: astral-sh/setup-uv@v7
|
|
160
160
|
|
|
161
161
|
- name: Install dependencies
|
|
162
|
-
run: uv sync
|
|
162
|
+
run: uv sync --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
163
163
|
|
|
164
164
|
# SYNC: Pre-commit hook 'validate-pydantic-patterns' at pre-commit stage
|
|
165
165
|
- name: Validate Pydantic patterns
|
|
@@ -251,7 +251,7 @@ jobs:
|
|
|
251
251
|
uses: astral-sh/setup-uv@v7
|
|
252
252
|
|
|
253
253
|
- name: Install dependencies
|
|
254
|
-
run: uv sync
|
|
254
|
+
run: uv sync --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
255
255
|
|
|
256
256
|
- name: Find and validate contract YAML files
|
|
257
257
|
run: |
|
|
@@ -281,7 +281,7 @@ jobs:
|
|
|
281
281
|
uses: astral-sh/setup-uv@v7
|
|
282
282
|
|
|
283
283
|
- name: Install dependencies
|
|
284
|
-
run: uv sync
|
|
284
|
+
run: uv sync --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
285
285
|
|
|
286
286
|
- name: Run I/O audit
|
|
287
287
|
run: uv run python -m omnimemory.audit
|
|
@@ -350,7 +350,7 @@ jobs:
|
|
|
350
350
|
uses: astral-sh/setup-uv@v7
|
|
351
351
|
|
|
352
352
|
- name: Install dependencies
|
|
353
|
-
run: uv sync
|
|
353
|
+
run: uv sync --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
|
|
354
354
|
|
|
355
355
|
- name: Run tests
|
|
356
356
|
run: |
|
|
@@ -101,6 +101,10 @@ repos:
|
|
|
101
101
|
- id: check-toml
|
|
102
102
|
- id: debug-statements
|
|
103
103
|
|
|
104
|
+
# ONEX String Version Anti-Pattern Detection
|
|
105
|
+
# TODO(OMN-3832-followup): Re-enable once validate-string-versions is packaged as a
|
|
106
|
+
# proper Python CLI entrypoint in omnibase_core (currently only works as a local script).
|
|
107
|
+
|
|
104
108
|
# Python code quality with ruff (replaces black, isort, flake8 - 10-100x faster)
|
|
105
109
|
# Configuration: pyproject.toml [tool.ruff] section (shared with CI)
|
|
106
110
|
# Using official ruff-pre-commit repo for CI compatibility (no Poetry dependency)
|
|
@@ -415,6 +419,25 @@ repos:
|
|
|
415
419
|
always_run: true
|
|
416
420
|
stages: [pre-commit]
|
|
417
421
|
|
|
422
|
+
# --------------------------------------------------------------------------
|
|
423
|
+
# Bolt URI Hardcode Guard (OMN-4314)
|
|
424
|
+
# Validates: No bolt://localhost literal strings in production Python source.
|
|
425
|
+
# Scope: src/ (non-test files). Test files exempt (*test_*, *conftest*, */tests/*).
|
|
426
|
+
# Purpose: Catches the class of bug where a developer hardcodes
|
|
427
|
+
# connection_uri="bolt://localhost:7687" in production code.
|
|
428
|
+
# bolt://localhost resolves to the container itself inside Docker,
|
|
429
|
+
# not the Memgraph service (omnibase-infra-memgraph). Always read
|
|
430
|
+
# OMNIMEMORY_MEMGRAPH_HOST/PORT from environment instead.
|
|
431
|
+
# Parallel to: kafka-no-hardcoded-fallback in omnibase_infra
|
|
432
|
+
# --------------------------------------------------------------------------
|
|
433
|
+
- id: no-hardcoded-bolt-fallback
|
|
434
|
+
name: "No hardcoded bolt://localhost URIs"
|
|
435
|
+
language: script
|
|
436
|
+
entry: scripts/check_no_hardcoded_bolt.sh
|
|
437
|
+
pass_filenames: false
|
|
438
|
+
types: [python]
|
|
439
|
+
stages: [pre-commit]
|
|
440
|
+
|
|
418
441
|
# Configuration
|
|
419
442
|
default_install_hook_types: [pre-commit, pre-push]
|
|
420
443
|
default_stages: [pre-commit]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omninode-memory
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.6
|
|
4
4
|
Summary: OmniNode document ingestion and semantic retrieval
|
|
5
5
|
Project-URL: Homepage, https://github.com/OmniNode-ai/omnimemory
|
|
6
6
|
Project-URL: Repository, https://github.com/OmniNode-ai/omnimemory
|
|
@@ -20,9 +20,9 @@ Requires-Dist: cachetools<8.0.0,>=6.2.4
|
|
|
20
20
|
Requires-Dist: fastapi<1.0.0,>=0.120.1
|
|
21
21
|
Requires-Dist: httpx<1.0.0,>=0.28.0
|
|
22
22
|
Requires-Dist: mcp<2.0.0,>=1.8.0
|
|
23
|
-
Requires-Dist: omnibase-core
|
|
24
|
-
Requires-Dist: omnibase-infra
|
|
25
|
-
Requires-Dist: omnibase-spi==0.15.
|
|
23
|
+
Requires-Dist: omnibase-core<0.25.0,>=0.24.0
|
|
24
|
+
Requires-Dist: omnibase-infra<0.17.0,>=0.16.2
|
|
25
|
+
Requires-Dist: omnibase-spi==0.15.2
|
|
26
26
|
Requires-Dist: pinecone-client<7.0.0,>=4.1.0
|
|
27
27
|
Requires-Dist: psutil<8.0.0,>=7.0.0
|
|
28
28
|
Requires-Dist: psycopg2-binary<3.0.0,>=2.9.10
|
|
@@ -35,7 +35,9 @@ logger = logging.getLogger(__name__)
|
|
|
35
35
|
|
|
36
36
|
QDRANT_HOST = os.environ.get("QDRANT_HOST", "localhost")
|
|
37
37
|
QDRANT_PORT = int(os.environ.get("QDRANT_PORT", "6333"))
|
|
38
|
-
QDRANT_API_KEY = os.environ.get("QDRANT_API_KEY") or os.environ.get(
|
|
38
|
+
QDRANT_API_KEY = os.environ.get("QDRANT_API_KEY") or os.environ.get(
|
|
39
|
+
"QDRANT__SERVICE__API_KEY"
|
|
40
|
+
)
|
|
39
41
|
COLLECTION_NAME = "navigation_paths"
|
|
40
42
|
|
|
41
43
|
# Qwen3-Embedding-8B produces 4096-dimensional vectors.
|
|
@@ -53,7 +55,13 @@ async def create_collection() -> None:
|
|
|
53
55
|
- ``start_state``: Embedding of the start-state identifier.
|
|
54
56
|
"""
|
|
55
57
|
# https=False keeps plain HTTP even when api_key is set (localhost dev setup).
|
|
56
|
-
client = AsyncQdrantClient(
|
|
58
|
+
client = AsyncQdrantClient(
|
|
59
|
+
host=QDRANT_HOST,
|
|
60
|
+
port=QDRANT_PORT,
|
|
61
|
+
api_key=QDRANT_API_KEY,
|
|
62
|
+
https=False,
|
|
63
|
+
timeout=30,
|
|
64
|
+
)
|
|
57
65
|
|
|
58
66
|
try:
|
|
59
67
|
try:
|
|
@@ -103,7 +111,9 @@ async def create_collection() -> None:
|
|
|
103
111
|
field_name="start_state_id",
|
|
104
112
|
field_schema=qdrant_models.PayloadSchemaType.KEYWORD,
|
|
105
113
|
)
|
|
106
|
-
logger.info(
|
|
114
|
+
logger.info(
|
|
115
|
+
"Created payload indexes on outcome, graph_fingerprint, start_state_id."
|
|
116
|
+
)
|
|
107
117
|
except UnexpectedResponse as exc:
|
|
108
118
|
logger.error("Qdrant API error during index creation: %s", exc)
|
|
109
119
|
sys.exit(1)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2026 OmniNode Team
|
|
3
|
+
#
|
|
4
|
+
# Dockerfile.migrate — omnimemory database migration image
|
|
5
|
+
#
|
|
6
|
+
# Ownership: omnimemory repo owns all migration SQL artifacts.
|
|
7
|
+
# This image is pulled by the k8s/migrations/omnimemory-migrate.yaml
|
|
8
|
+
# initContainer and used by the omnimemory migration Job.
|
|
9
|
+
#
|
|
10
|
+
# Build context: repo root (docker build -f deployment/docker/Dockerfile.migrate .)
|
|
11
|
+
#
|
|
12
|
+
# Note: omnimemory migrations are at deployment/database/migrations/ (no forward/ subdir).
|
|
13
|
+
|
|
14
|
+
FROM alpine:3.19
|
|
15
|
+
|
|
16
|
+
COPY deployment/database/migrations/*.sql /migrations/
|
|
@@ -27,7 +27,6 @@ This document maps existing handlers from `omnibase_infra` to the Core 8 memory
|
|
|
27
27
|
| `HandlerFileSystem` | `handler_filesystem` | Secure file I/O | read_file, write_file, list_directory | MEDIUM - persistent storage |
|
|
28
28
|
| `HandlerGraph` | `handler_graph` | Graph database (Neo4j/Memgraph) | execute_query, create_node, traverse | HIGH - relationship memory |
|
|
29
29
|
| `HandlerHttp` | `handler_http` | HTTP REST client | GET, POST | MEDIUM - external LLM calls |
|
|
30
|
-
| `HandlerConsul` | `handler_consul` | Service discovery | register, deregister, health | LOW - infrastructure only |
|
|
31
30
|
| `HandlerVault` | `handler_vault` | Secrets management | read, write secrets | LOW - security only |
|
|
32
31
|
| `HandlerMcp` | `handler_mcp` | MCP protocol | MCP operations | LOW - agent communication |
|
|
33
32
|
| `HandlerManifestPersistence` | `handler_manifest_persistence` | Manifest storage | persist manifests | LOW - specialized |
|
|
@@ -43,7 +42,6 @@ This document maps existing handlers from `omnibase_infra` to the Core 8 memory
|
|
|
43
42
|
|
|
44
43
|
| Handler Class | Module | Purpose | Reuse Potential |
|
|
45
44
|
|---------------|--------|---------|-----------------|
|
|
46
|
-
| `HandlerServiceDiscoveryConsul` | `handler_service_discovery_consul` | Consul discovery | LOW - infrastructure |
|
|
47
45
|
| `HandlerServiceDiscoveryMock` | `handler_service_discovery_mock` | Mock discovery | HIGH - testing patterns |
|
|
48
46
|
|
|
49
47
|
### Node-Specific Handlers (`omnibase_infra.nodes.node_registration_orchestrator.handlers`)
|
|
@@ -61,8 +59,6 @@ This document maps existing handlers from `omnibase_infra` to the Core 8 memory
|
|
|
61
59
|
|---------------|--------|---------|-----------------|
|
|
62
60
|
| `HandlerPostgresUpsert` | `handler_postgres_upsert` | PostgreSQL upsert | HIGH - storage patterns |
|
|
63
61
|
| `HandlerPostgresDeactivate` | `handler_postgres_deactivate` | PostgreSQL deactivation | MEDIUM - lifecycle |
|
|
64
|
-
| `HandlerConsulRegister` | `handler_consul_register` | Consul registration | LOW - infrastructure |
|
|
65
|
-
| `HandlerConsulDeregister` | `handler_consul_deregister` | Consul deregistration | LOW - infrastructure |
|
|
66
62
|
| `HandlerPartialRetry` | `handler_partial_retry` | Retry logic | HIGH - resilience patterns |
|
|
67
63
|
|
|
68
64
|
### Runtime Handlers (`omnibase_infra.runtime`)
|
|
@@ -321,7 +317,6 @@ Handler access must be controlled at multiple layers.
|
|
|
321
317
|
| **handler_http.py** | Bearer tokens / API keys | Endpoint-specific | Rotate keys; use short-lived tokens |
|
|
322
318
|
| **handler_graph.py** | Connection credentials | Label-based access control | Restrict node/edge type access |
|
|
323
319
|
| **handler_vault.py** | Vault token | Policy-based | Use AppRole for services |
|
|
324
|
-
| **handler_consul.py** | ACL token | Service-level policies | Read-only for most operations |
|
|
325
320
|
|
|
326
321
|
#### Implementation Pattern
|
|
327
322
|
|
|
@@ -7,7 +7,7 @@ build-backend = "hatchling.build"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "omninode-memory"
|
|
10
|
-
version = "0.6.
|
|
10
|
+
version = "0.6.6"
|
|
11
11
|
description = "OmniNode document ingestion and semantic retrieval"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.12,<4.0"
|
|
@@ -59,9 +59,9 @@ dependencies = [
|
|
|
59
59
|
"pyyaml>=6.0.2,<7.0.0",
|
|
60
60
|
|
|
61
61
|
# ONEX dependencies - versioned releases from PyPI
|
|
62
|
-
"omnibase-core
|
|
63
|
-
"omnibase-spi==0.15.
|
|
64
|
-
"omnibase-infra
|
|
62
|
+
"omnibase-core>=0.24.0,<0.25.0",
|
|
63
|
+
"omnibase-spi==0.15.2",
|
|
64
|
+
"omnibase-infra>=0.16.2,<0.17.0",
|
|
65
65
|
|
|
66
66
|
# Logging and monitoring
|
|
67
67
|
# Version ^23.3.0 required for compatibility with omnibase-infra (requires ^23.2.0)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Reject bolt://localhost literal strings in production Python source.
|
|
3
|
+
# Docstrings (triple-quoted blocks) and test files are exempt.
|
|
4
|
+
# This is the memory-pipeline equivalent of kafka-no-hardcoded-fallback.
|
|
5
|
+
#
|
|
6
|
+
# Usage: called by pre-commit (pass_filenames: false, scans src/ directly)
|
|
7
|
+
# Exempt: files matching *test_*, *conftest*, */tests/*
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
VIOLATIONS=0
|
|
11
|
+
|
|
12
|
+
while IFS= read -r -d '' file; do
|
|
13
|
+
# Skip test files
|
|
14
|
+
case "$file" in
|
|
15
|
+
*test_* | *conftest* | */tests/*) continue ;;
|
|
16
|
+
esac
|
|
17
|
+
|
|
18
|
+
if grep -n 'bolt://localhost' "$file" 2>/dev/null; then
|
|
19
|
+
echo "ERROR: Hardcoded bolt://localhost in $file"
|
|
20
|
+
echo " Read OMNIMEMORY_MEMGRAPH_HOST/PORT from env instead of hardcoding."
|
|
21
|
+
echo " (Check plugin config, Settings model, or env helper for the project-standard pattern.)"
|
|
22
|
+
VIOLATIONS=$((VIOLATIONS + 1))
|
|
23
|
+
fi
|
|
24
|
+
done < <(find src/ -name "*.py" -type f -print0)
|
|
25
|
+
|
|
26
|
+
if [[ $VIOLATIONS -gt 0 ]]; then
|
|
27
|
+
echo ""
|
|
28
|
+
echo "Found $VIOLATIONS file(s) with hardcoded bolt://localhost URIs."
|
|
29
|
+
echo "These will fail inside Docker where 'localhost' resolves to the container itself."
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
@@ -264,7 +264,7 @@ class TransportImportChecker(ast.NodeVisitor):
|
|
|
264
264
|
|
|
265
265
|
def _extract_root_module(self, module_name: str) -> str:
|
|
266
266
|
"""Extract the root module from a potentially dotted module path."""
|
|
267
|
-
return module_name.split(".")[0]
|
|
267
|
+
return module_name.split(".", maxsplit=1)[0]
|
|
268
268
|
|
|
269
269
|
def _is_type_checking_guard(self, node: ast.If) -> bool:
|
|
270
270
|
"""Detect if an If node is a TYPE_CHECKING guard.
|
|
@@ -106,9 +106,9 @@ ALLOWED_PATHS = [
|
|
|
106
106
|
"handlers/adapters/",
|
|
107
107
|
# Legacy clients directory - allowed during migration
|
|
108
108
|
# TODO: Remove this allowance after migration to adapters is complete
|
|
109
|
-
"nodes/
|
|
109
|
+
"nodes/node_memory_retrieval_effect/clients/",
|
|
110
110
|
# Kreuzberg effect client - HTTP transport boundary for document extraction (OMN-2733)
|
|
111
|
-
"nodes/
|
|
111
|
+
"nodes/node_kreuzberg_parse_effect/clients/",
|
|
112
112
|
# Tests can mock HTTP clients
|
|
113
113
|
"tests/",
|
|
114
114
|
]
|
{omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_kafka_imports.py
RENAMED
|
@@ -233,10 +233,7 @@ def main() -> int:
|
|
|
233
233
|
print("instead of importing Kafka clients directly.")
|
|
234
234
|
return 1
|
|
235
235
|
|
|
236
|
-
print(
|
|
237
|
-
f"No Kafka import violations found. "
|
|
238
|
-
f"Checked {len(files_to_check)} file(s)."
|
|
239
|
-
)
|
|
236
|
+
print(f"No Kafka import violations found. Checked {len(files_to_check)} file(s).")
|
|
240
237
|
return 0
|
|
241
238
|
|
|
242
239
|
|
{omninode_memory-0.6.4 → omninode_memory-0.6.6}/scripts/validation/validate_model_locations.py
RENAMED
|
@@ -65,9 +65,9 @@ ALLOWED_PATHS = [
|
|
|
65
65
|
# Primary models directory
|
|
66
66
|
"src/omnimemory/models/",
|
|
67
67
|
# Node-specific models (ONEX pattern)
|
|
68
|
-
"nodes/
|
|
69
|
-
"nodes/
|
|
70
|
-
"nodes/
|
|
68
|
+
"nodes/node_memory_retrieval_effect/models/",
|
|
69
|
+
"nodes/node_memory_storage_effect/models/",
|
|
70
|
+
"nodes/node_similarity_compute/models/",
|
|
71
71
|
# Protocol definitions (interfaces and base models)
|
|
72
72
|
"src/omnimemory/protocols/",
|
|
73
73
|
# Tests can have models for fixtures/mocks
|
|
@@ -169,7 +169,9 @@ class PydanticModelVisitor(ast.NodeVisitor):
|
|
|
169
169
|
is_exempt = False
|
|
170
170
|
start_line = node.lineno - 1 # 0-indexed
|
|
171
171
|
# Scan from class start to the line ending with ":" (class signature end)
|
|
172
|
-
for line_idx in range(
|
|
172
|
+
for line_idx in range(
|
|
173
|
+
start_line, min(start_line + 10, len(self.source_lines))
|
|
174
|
+
):
|
|
173
175
|
line = self.source_lines[line_idx]
|
|
174
176
|
if EXEMPTION_PATTERN.search(line):
|
|
175
177
|
is_exempt = True
|
|
@@ -228,7 +228,7 @@ def get_ancestor_typed_directory(filepath: Path) -> str | None:
|
|
|
228
228
|
"""Check if any ancestor is a typed directory.
|
|
229
229
|
|
|
230
230
|
This helps identify files that are deeply nested within a typed directory
|
|
231
|
-
(e.g., nodes/
|
|
231
|
+
(e.g., nodes/node_memory_storage_effect/adapters/) where the top-level type
|
|
232
232
|
should still influence validation behavior.
|
|
233
233
|
|
|
234
234
|
Returns the first ancestor typed directory name, or None.
|
|
@@ -25,7 +25,13 @@ Usage:
|
|
|
25
25
|
>>> # Use domain-specific models for memory operations
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
# Do not hardcode versions here; version is sourced from distribution metadata.
|
|
29
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
30
|
+
|
|
31
|
+
try:
|
|
32
|
+
__version__ = version("omninode-memory")
|
|
33
|
+
except PackageNotFoundError:
|
|
34
|
+
__version__ = "0.0.0-dev"
|
|
29
35
|
__author__ = "OmniNode-ai"
|
|
30
36
|
__email__ = "contact@omninode.ai"
|
|
31
37
|
|
|
@@ -18,7 +18,7 @@ Subpackages:
|
|
|
18
18
|
|
|
19
19
|
Note:
|
|
20
20
|
HandlerSemanticCompute now lives in its node's handlers directory following ONEX patterns:
|
|
21
|
-
``omnimemory.nodes.
|
|
21
|
+
``omnimemory.nodes.node_semantic_analyzer_compute.handlers.handler_semantic_compute``
|
|
22
22
|
|
|
23
23
|
It is re-exported here for import convenience.
|
|
24
24
|
|
|
@@ -93,7 +93,7 @@ from omnimemory.handlers.models import ModelHandlerIntentConfig
|
|
|
93
93
|
from omnimemory.models.config import ModelHandlerSemanticComputeConfig
|
|
94
94
|
|
|
95
95
|
# Re-export from node's handlers directory for import convenience
|
|
96
|
-
from omnimemory.nodes.
|
|
96
|
+
from omnimemory.nodes.node_semantic_analyzer_compute.handlers import (
|
|
97
97
|
HandlerSemanticCompute,
|
|
98
98
|
HandlerSemanticComputePolicy,
|
|
99
99
|
)
|
{omninode_memory-0.6.4 → omninode_memory-0.6.6}/src/omnimemory/handlers/adapters/__init__.py
RENAMED
|
@@ -34,7 +34,7 @@ Example::
|
|
|
34
34
|
# Graph adapter
|
|
35
35
|
config = ModelGraphMemoryConfig(max_depth=3)
|
|
36
36
|
adapter = AdapterGraphMemory(config)
|
|
37
|
-
await adapter.initialize(connection_uri="bolt://
|
|
37
|
+
await adapter.initialize(connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}")
|
|
38
38
|
|
|
39
39
|
# Embedding client (contract boundary for HTTP)
|
|
40
40
|
embed_config = ModelEmbeddingHttpClientConfig(
|
|
@@ -47,7 +47,7 @@ Example::
|
|
|
47
47
|
# Intent graph adapter
|
|
48
48
|
intent_config = ModelAdapterIntentGraphConfig(timeout_seconds=30.0)
|
|
49
49
|
intent_adapter = AdapterIntentGraph(intent_config)
|
|
50
|
-
await intent_adapter.initialize(connection_uri="bolt://
|
|
50
|
+
await intent_adapter.initialize(connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}")
|
|
51
51
|
|
|
52
52
|
# Valkey adapter for caching
|
|
53
53
|
valkey_config = AdapterValkeyConfig(host="localhost", port=6379)
|
|
@@ -24,7 +24,7 @@ Example::
|
|
|
24
24
|
config = ModelGraphMemoryConfig(max_depth=5)
|
|
25
25
|
adapter = AdapterGraphMemory(config)
|
|
26
26
|
await adapter.initialize(
|
|
27
|
-
connection_uri="bolt://
|
|
27
|
+
connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}",
|
|
28
28
|
auth=("neo4j", "password"),
|
|
29
29
|
)
|
|
30
30
|
|
|
@@ -396,7 +396,7 @@ class AdapterGraphMemory:
|
|
|
396
396
|
config = ModelGraphMemoryConfig(max_depth=3)
|
|
397
397
|
adapter = AdapterGraphMemory(config)
|
|
398
398
|
await adapter.initialize(
|
|
399
|
-
connection_uri="bolt://
|
|
399
|
+
connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}",
|
|
400
400
|
)
|
|
401
401
|
|
|
402
402
|
# Find related memories up to 2 hops away
|
|
@@ -453,7 +453,7 @@ class AdapterGraphMemory:
|
|
|
453
453
|
the handler for memory queries.
|
|
454
454
|
|
|
455
455
|
Args:
|
|
456
|
-
connection_uri: Graph database URI (e.g., "bolt://
|
|
456
|
+
connection_uri: Graph database URI (e.g., "bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}").
|
|
457
457
|
auth: Optional (username, password) tuple for authentication.
|
|
458
458
|
options: Additional connection options passed to the graph handler.
|
|
459
459
|
|
|
@@ -33,7 +33,7 @@ Example::
|
|
|
33
33
|
config = ModelAdapterIntentGraphConfig(timeout_seconds=30.0)
|
|
34
34
|
adapter = AdapterIntentGraph(config)
|
|
35
35
|
await adapter.initialize(
|
|
36
|
-
connection_uri="bolt://
|
|
36
|
+
connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}",
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
# Store an intent (classification already happened upstream)
|
|
@@ -327,7 +327,7 @@ class AdapterIntentGraph(ProtocolIntentGraphAdapter):
|
|
|
327
327
|
)
|
|
328
328
|
adapter = AdapterIntentGraph(config)
|
|
329
329
|
await adapter.initialize(
|
|
330
|
-
connection_uri="bolt://
|
|
330
|
+
connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}",
|
|
331
331
|
)
|
|
332
332
|
|
|
333
333
|
# Store intent classification (classification happened upstream)
|
|
@@ -434,7 +434,7 @@ class AdapterIntentGraph(ProtocolIntentGraphAdapter):
|
|
|
434
434
|
successful initialization is a no-op.
|
|
435
435
|
|
|
436
436
|
Args:
|
|
437
|
-
connection_uri: Graph database URI (e.g., "bolt://
|
|
437
|
+
connection_uri: Graph database URI (e.g., "bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}").
|
|
438
438
|
auth: Optional (username, password) tuple for authentication.
|
|
439
439
|
options: Additional connection options passed to the graph handler.
|
|
440
440
|
|
|
@@ -40,7 +40,7 @@ Example::
|
|
|
40
40
|
handler = HandlerIntent(container)
|
|
41
41
|
|
|
42
42
|
await handler.initialize(
|
|
43
|
-
connection_uri="bolt://
|
|
43
|
+
connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}",
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
# Store an intent
|
|
@@ -212,7 +212,7 @@ class HandlerIntent:
|
|
|
212
212
|
container = ModelONEXContainer()
|
|
213
213
|
handler = HandlerIntent(container)
|
|
214
214
|
|
|
215
|
-
await handler.initialize(connection_uri="bolt://
|
|
215
|
+
await handler.initialize(connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}")
|
|
216
216
|
|
|
217
217
|
result = await handler.store_intent(
|
|
218
218
|
session_id="sess_123",
|
|
@@ -287,7 +287,7 @@ class HandlerIntent:
|
|
|
287
287
|
initialization is a no-op.
|
|
288
288
|
|
|
289
289
|
Args:
|
|
290
|
-
connection_uri: Graph database URI (e.g., "bolt://
|
|
290
|
+
connection_uri: Graph database URI (e.g., "bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}").
|
|
291
291
|
auth: Optional (username, password) tuple for authentication.
|
|
292
292
|
options: Additional configuration options:
|
|
293
293
|
- timeout_seconds: Operation timeout (default: 30.0)
|