omninode-memory 0.8.0__tar.gz → 0.9.0__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.8.0 → omninode_memory-0.9.0}/.github/workflows/build-and-push-migrate-image.yml +2 -2
- omninode_memory-0.9.0/.github/workflows/omni-standards-compliance.yml +52 -0
- omninode_memory-0.9.0/.github/workflows/security-scan.yml +29 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.pre-commit-config.yaml +10 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CHANGELOG.md +16 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/PKG-INFO +4 -4
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/pyproject.toml +14 -6
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_naming.py +3 -1
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/handler_filesystem_crawler.py +7 -13
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/handler_intent_event_consumer.py +15 -34
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +2 -3
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +3 -14
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/plugin.py +13 -7
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/settings.py +26 -4
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -3
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_filesystem_crawler_effect/test_handler_filesystem_crawler.py +5 -39
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/test_handler_intent_event_consumer.py +25 -43
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +3 -20
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_dispatch_handlers.py +3 -3
- omninode_memory-0.9.0/tests/unit/test_entry_points.py +24 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_validate_ci_precommit_alignment.py +1 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/uv.lock +16 -28
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.claude/architecture-handshake.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.env.example +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.flake8 +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/dependabot.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/required-checks.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/auto-tag-on-merge.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/contract-validation.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/pre-commit.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/release-dry-run.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/release.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/test.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.gitignore +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.markdown-link-check.json +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.secrets.baseline +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.serena/memories/project_overview.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.serena/memories/suggested_commands.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.serena/project.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.yamlfmt +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/AGENT.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CLAUDE.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CODE_OF_CONDUCT.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CONTRIBUTING.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/LICENSE +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/README.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/SECURITY.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/002_create_memories_table.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/docker/Dockerfile.migrate +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docker-compose.prod.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docker-compose.yml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/INDEX.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/PERFORMANCE_TESTING.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/architecture/ARCH_002_KAFKA_ABSTRACTION.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/architecture/ONEX_FOUR_NODE_ARCHITECTURE.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/ci/CI_MONITORING_GUIDE.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/db-split/fk-audit-omn-2069.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/environment_variables.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/handler_reuse_matrix.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/pii_handling.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/runtime/RUNTIME_PLUGINS.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/stub_protocols.md +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/examples/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/examples/advanced_architecture_demo.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/pyrightconfig.json +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/check_migration_freeze.sh +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/check_no_hardcoded_bolt.sh +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validate_ci_precommit_alignment.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validate_no_transport_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/check_ai_slop.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_enum_casing.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_http_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_kafka_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_model_locations.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_no_backward_compatibility.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_pydantic_patterns.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_secrets.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_single_class_per_file.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_spdx_headers.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/_compat_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/audit/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/audit/__main__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/audit/io_audit.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/bootstrap.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_context_item_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_data_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_error_code.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_migration_status.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_node_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_operation_status.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_priority_level.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_severity.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_subscription_status.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_trust_level.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/errors/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/errors/embedding_errors.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/handler_intent.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/handler_subscription.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_embedding_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_postgres_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/container/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_context.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_provenance.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_crawl_state_record.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/types.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/events/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_configuration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_error_details.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_health_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_notes.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_priority.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_semver.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_system_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_tags.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_user.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_item.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_query.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/model_service_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/model_service_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/model_service_registry.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/constants.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/model_subscription.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_audit.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_concurrency.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_status.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_match.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_type.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_retry_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_system_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/base.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/model_filesystem_crawl_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/model_filesystem_crawler_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/model_consumer_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/model_consumer_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/util_event_mapper.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/utils/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/utils/util_intent_mapping.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/client_kreuzberg.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/embedding_client.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_statistics_reducer/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/base_protocols.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/data_models.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/error_models.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_crawl_state_repository.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_embedding.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/adapters.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/contract_topics.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/dispatch_handlers.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/introspection.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/message_type_registration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/wiring.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/secrets.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/contract_linter.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/stubs/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/stubs/contract_validator.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/audit_logger.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/concurrency.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/db_url.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/error_sanitizer.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/handler_constants.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/health_manager.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/observability.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/pii_detector.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/resource_manager.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/retry_utils.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/audit/io_audit_whitelist.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/audit/transport_import_whitelist.yaml +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/conftest.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/test_handler_intent.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/test_handler_semantic_compute.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/conftest.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_entry_point_discovery.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_handler_subscription.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_node_agent_coordinator.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/contracts/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/contracts/test_extended_contracts.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/events/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/events/test_model_intent_classified_event.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/test_frozen_boundary_models.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/test_model_consumer_health.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/test_util_event_mapper.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_bootstrap.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_concurrency.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_config_models.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_contract_validation.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_contract_version.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_db_url.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_foundation.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_health_manager.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_migration_progress.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_node_enforcement.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_node_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_observability_metrics.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_performance.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_resource_manager.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_secrets_provider.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_settings.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_validation_scripts.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/test_subscription_typing.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_handler_qdrant.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/__init__.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/conftest.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_adapters.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_contract_topics.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_introspection.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_message_type_registration.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_plugin.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_wiring.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_contract_linter.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_ingestion_models.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_io_audit.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_scope_mapping_config.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_sql_placeholders.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_validate_kafka_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_validate_no_transport_imports.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_architecture_improvements.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_foundation.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_foundation_isolated.py +0 -0
- {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_foundation_minimal.py +0 -0
{omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/build-and-push-migrate-image.yml
RENAMED
|
@@ -24,8 +24,8 @@ jobs:
|
|
|
24
24
|
runs-on: ubuntu-latest
|
|
25
25
|
timeout-minutes: 15
|
|
26
26
|
steps:
|
|
27
|
-
- uses: actions/checkout@
|
|
28
|
-
- uses: aws-actions/configure-aws-credentials@
|
|
27
|
+
- uses: actions/checkout@v6
|
|
28
|
+
- uses: aws-actions/configure-aws-credentials@v6
|
|
29
29
|
with:
|
|
30
30
|
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT_ID }}:role/omninode-github-actions-role
|
|
31
31
|
role-session-name: gha-build-migrate-omnimemory
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
---
|
|
4
|
+
name: Omni* Ecosystem Standards Compliance
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [main, develop, "jonah/*", "jonahgabriel/*"]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [main, develop]
|
|
11
|
+
merge_group:
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
env:
|
|
15
|
+
PYTHON_VERSION: "3.12"
|
|
16
|
+
UV_VERSION: "0.8.3"
|
|
17
|
+
REPO_NAME: "omnimemory"
|
|
18
|
+
|
|
19
|
+
# ci-health-ok: blocking mypy --strict already enforced in test.yml lint job
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
type-union-check:
|
|
23
|
+
name: PEP 604 Type Union Check (UP007)
|
|
24
|
+
# OMNINODE_SELF_HOSTED_RUNS_ON_V1 — do not edit inline; update plan + all occurrences together
|
|
25
|
+
runs-on: >-
|
|
26
|
+
${{
|
|
27
|
+
(vars.USE_SELF_HOSTED_RUNNERS == 'true' &&
|
|
28
|
+
(github.event_name == 'push' ||
|
|
29
|
+
github.event_name == 'workflow_dispatch' ||
|
|
30
|
+
github.event_name == 'schedule'))
|
|
31
|
+
&& fromJSON('["self-hosted","omnibase-ci"]')
|
|
32
|
+
|| fromJSON('["ubuntu-latest"]')
|
|
33
|
+
}}
|
|
34
|
+
steps:
|
|
35
|
+
- name: Checkout code
|
|
36
|
+
uses: actions/checkout@v6
|
|
37
|
+
|
|
38
|
+
- name: Set up Python
|
|
39
|
+
uses: actions/setup-python@v6
|
|
40
|
+
with:
|
|
41
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
42
|
+
|
|
43
|
+
- name: Install uv
|
|
44
|
+
uses: astral-sh/setup-uv@v7
|
|
45
|
+
with:
|
|
46
|
+
version: ${{ env.UV_VERSION }}
|
|
47
|
+
|
|
48
|
+
- name: Install dependencies
|
|
49
|
+
run: uv sync --all-extras
|
|
50
|
+
|
|
51
|
+
- name: Check for Optional/Union usage (PEP 604)
|
|
52
|
+
run: uv run ruff check src/ --select UP007,UP006
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
# CodeQL security and quality analysis for omnimemory.
|
|
5
|
+
# Calls the reusable workflow in onex_change_control.
|
|
6
|
+
# OMN-5424
|
|
7
|
+
|
|
8
|
+
name: Security Scan
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
push:
|
|
12
|
+
branches: [main]
|
|
13
|
+
pull_request:
|
|
14
|
+
branches: [main]
|
|
15
|
+
schedule:
|
|
16
|
+
# Run weekly on Monday at 06:00 UTC
|
|
17
|
+
- cron: "0 6 * * 1"
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
codeql:
|
|
21
|
+
name: CodeQL
|
|
22
|
+
uses: OmniNode-ai/onex_change_control/.github/workflows/codeql-reusable.yml@main
|
|
23
|
+
with:
|
|
24
|
+
language: python
|
|
25
|
+
query_suite: security-and-quality
|
|
26
|
+
permissions:
|
|
27
|
+
actions: read
|
|
28
|
+
contents: read
|
|
29
|
+
security-events: write
|
|
@@ -76,6 +76,16 @@
|
|
|
76
76
|
# pre-commit run --all-files --hook-stage pre-push # Run pre-push hooks
|
|
77
77
|
|
|
78
78
|
repos:
|
|
79
|
+
# No hardcoded ONEX topic strings — sourced from onex_change_control (OMN-5259)
|
|
80
|
+
- repo: https://github.com/OmniNode-ai/onex_change_control
|
|
81
|
+
rev: 39a09ffb2432b8b7d3f47b334b869b55c9cb4fc6 # pragma: allowlist secret
|
|
82
|
+
hooks:
|
|
83
|
+
- id: no-hardcoded-topics
|
|
84
|
+
# Pre-existing violations — pending migration to canonical topic constants
|
|
85
|
+
exclude: >-
|
|
86
|
+
^src/omnimemory/nodes/(node_filesystem_crawler_effect|node_intent_event_consumer_effect|node_kreuzberg_parse_effect)/models/
|
|
87
|
+
stages: [pre-commit]
|
|
88
|
+
|
|
79
89
|
# Stub implementation detection — sourced from omnibase_core (OMN-4472)
|
|
80
90
|
- repo: https://github.com/OmniNode-ai/omnibase_core
|
|
81
91
|
rev: 30a06f85bb5849902d33c8d0bdb90fc6cba0c346 # pragma: allowlist secret
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## v0.9.0 (2026-03-19)
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- feat(ci): deploy CodeQL security scanning to omnimemory [OMN-5424] (#179)
|
|
5
|
+
- feat: add onex.node_package entry point for contract discovery [OMN-5370] (#177)
|
|
6
|
+
- feat: PluginMemory.should_activate() infers from OMNIMEMORY_MEMGRAPH_HOST [OMN-5359] (#175)
|
|
7
|
+
- feat: infer OMNIMEMORY__POSTGRES_ENABLED and QDRANT_ENABLED from connection URLs [OMN-5362] (#176)
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- fix: remove env_prefix topic prefixing from handlers [OMN-5214] (#171, #172)
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- ci(omnimemory): add ruff UP007 standards compliance workflow [OMN-5132] (#178)
|
|
14
|
+
- chore: wire no-hardcoded-topics pre-commit hook [OMN-5259] (#174)
|
|
15
|
+
- chore(deps): bump omnibase-core to 0.29.0, omnibase-spi to 0.18.0, omnibase-infra to 0.22.0
|
|
16
|
+
|
|
1
17
|
## v0.7.2 (2026-03-13)
|
|
2
18
|
|
|
3
19
|
### Other Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omninode-memory
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
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==0.
|
|
24
|
-
Requires-Dist: omnibase-infra==0.
|
|
25
|
-
Requires-Dist: omnibase-spi==0.
|
|
23
|
+
Requires-Dist: omnibase-core==0.29.0
|
|
24
|
+
Requires-Dist: omnibase-infra==0.22.0
|
|
25
|
+
Requires-Dist: omnibase-spi==0.18.0
|
|
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
|
|
@@ -7,7 +7,7 @@ build-backend = "hatchling.build"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "omninode-memory"
|
|
10
|
-
version = "0.
|
|
10
|
+
version = "0.9.0"
|
|
11
11
|
description = "OmniNode document ingestion and semantic retrieval"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.12,<3.14"
|
|
@@ -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==0.
|
|
63
|
-
"omnibase-spi==0.
|
|
64
|
-
"omnibase-infra==0.
|
|
62
|
+
"omnibase-core==0.29.0",
|
|
63
|
+
"omnibase-spi==0.18.0",
|
|
64
|
+
"omnibase-infra==0.22.0",
|
|
65
65
|
|
|
66
66
|
# Logging and monitoring
|
|
67
67
|
# Version ^23.3.0 required for compatibility with omnibase-infra (requires ^23.2.0)
|
|
@@ -84,6 +84,9 @@ Changelog = "https://github.com/OmniNode-ai/omnimemory/blob/main/CHANGELOG.md"
|
|
|
84
84
|
[project.entry-points."onex.domain_plugins"]
|
|
85
85
|
memory = "omnimemory.runtime.plugin:PluginMemory"
|
|
86
86
|
|
|
87
|
+
[project.entry-points."onex.node_package"]
|
|
88
|
+
omnimemory = "omnimemory.nodes"
|
|
89
|
+
|
|
87
90
|
[tool.hatch.build.targets.wheel]
|
|
88
91
|
packages = ["src/omnimemory"]
|
|
89
92
|
|
|
@@ -360,6 +363,11 @@ markers = [
|
|
|
360
363
|
[tool.uv]
|
|
361
364
|
# Override omnibase-infra's transitive pins on core/spi so our direct pins win.
|
|
362
365
|
override-dependencies = [
|
|
363
|
-
"omnibase-core==0.
|
|
364
|
-
"omnibase-spi==0.
|
|
366
|
+
"omnibase-core==0.29.0",
|
|
367
|
+
"omnibase-spi==0.18.0",
|
|
365
368
|
]
|
|
369
|
+
|
|
370
|
+
[tool.uv.sources]
|
|
371
|
+
omnibase-core = { git = "https://github.com/OmniNode-ai/omnibase_core.git", branch = "release/v0.29.0" }
|
|
372
|
+
omnibase-spi = { git = "https://github.com/OmniNode-ai/omnibase_spi.git", branch = "release/v0.18.0" }
|
|
373
|
+
omnibase-infra = { git = "https://github.com/OmniNode-ai/omnibase_infra.git", branch = "release/v0.22.0" }
|
|
@@ -356,7 +356,9 @@ def detect_expected_prefix_from_bases(
|
|
|
356
356
|
return None, None
|
|
357
357
|
|
|
358
358
|
|
|
359
|
-
def validate_file(
|
|
359
|
+
def validate_file( # stub-ok: docstring uses ModelXxx/ServiceXxx as naming examples, not TODO markers
|
|
360
|
+
filepath: Path,
|
|
361
|
+
) -> list[Violation]:
|
|
360
362
|
"""Validate a single Python file.
|
|
361
363
|
|
|
362
364
|
Validates:
|
|
@@ -50,7 +50,6 @@ Example::
|
|
|
50
50
|
correlation_id=uuid4(),
|
|
51
51
|
crawl_scope="omninode/omnimemory",
|
|
52
52
|
trigger_source="scheduled",
|
|
53
|
-
env_prefix="dev",
|
|
54
53
|
publish_callback=publisher,
|
|
55
54
|
)
|
|
56
55
|
print(f"discovered={result.discovered_count}")
|
|
@@ -353,7 +352,6 @@ class HandlerFilesystemCrawler:
|
|
|
353
352
|
correlation_id: UUID,
|
|
354
353
|
crawl_scope: str,
|
|
355
354
|
trigger_source: TriggerSource,
|
|
356
|
-
env_prefix: str,
|
|
357
355
|
publish_callback: Callable[
|
|
358
356
|
[str, dict[str, object]], Coroutine[object, object, None]
|
|
359
357
|
],
|
|
@@ -373,9 +371,8 @@ class HandlerFilesystemCrawler:
|
|
|
373
371
|
correlation_id: Threaded from the originating crawl tick command.
|
|
374
372
|
crawl_scope: Scope string from the crawl tick command.
|
|
375
373
|
trigger_source: What triggered this crawl run.
|
|
376
|
-
env_prefix: Deployment environment prefix (e.g. "dev").
|
|
377
374
|
publish_callback: Async callback for publishing events.
|
|
378
|
-
Signature: (
|
|
375
|
+
Signature: (topic, message_dict) -> Coroutine[..., None].
|
|
379
376
|
scope_mappings: Optional list of (path_prefix, scope_ref) pairs
|
|
380
377
|
for scope resolution. If None, DEFAULT_SCOPE_REF is used
|
|
381
378
|
for all files.
|
|
@@ -607,7 +604,7 @@ class HandlerFilesystemCrawler:
|
|
|
607
604
|
)
|
|
608
605
|
await _publish_event(
|
|
609
606
|
publish_callback,
|
|
610
|
-
|
|
607
|
+
self._config.publish_topic_discovered,
|
|
611
608
|
discovered_event.model_dump(mode="json"),
|
|
612
609
|
correlation_id,
|
|
613
610
|
)
|
|
@@ -626,7 +623,7 @@ class HandlerFilesystemCrawler:
|
|
|
626
623
|
)
|
|
627
624
|
await _publish_event(
|
|
628
625
|
publish_callback,
|
|
629
|
-
|
|
626
|
+
self._config.publish_topic_indexed,
|
|
630
627
|
indexed_event.model_dump(mode="json"),
|
|
631
628
|
correlation_id,
|
|
632
629
|
)
|
|
@@ -682,7 +679,7 @@ class HandlerFilesystemCrawler:
|
|
|
682
679
|
)
|
|
683
680
|
await _publish_event(
|
|
684
681
|
publish_callback,
|
|
685
|
-
|
|
682
|
+
self._config.publish_topic_changed,
|
|
686
683
|
changed_event.model_dump(mode="json"),
|
|
687
684
|
correlation_id,
|
|
688
685
|
)
|
|
@@ -701,7 +698,7 @@ class HandlerFilesystemCrawler:
|
|
|
701
698
|
)
|
|
702
699
|
await _publish_event(
|
|
703
700
|
publish_callback,
|
|
704
|
-
|
|
701
|
+
self._config.publish_topic_indexed,
|
|
705
702
|
indexed_event.model_dump(mode="json"),
|
|
706
703
|
correlation_id,
|
|
707
704
|
)
|
|
@@ -744,7 +741,6 @@ class HandlerFilesystemCrawler:
|
|
|
744
741
|
emitted_at_utc=now_utc,
|
|
745
742
|
crawl_scope=crawl_scope,
|
|
746
743
|
trigger_source=trigger_source,
|
|
747
|
-
env_prefix=env_prefix,
|
|
748
744
|
publish_callback=publish_callback,
|
|
749
745
|
resolved_mappings=resolved_mappings,
|
|
750
746
|
)
|
|
@@ -789,7 +785,6 @@ class HandlerFilesystemCrawler:
|
|
|
789
785
|
emitted_at_utc: datetime,
|
|
790
786
|
crawl_scope: str,
|
|
791
787
|
trigger_source: TriggerSource,
|
|
792
|
-
env_prefix: str,
|
|
793
788
|
publish_callback: Callable[
|
|
794
789
|
[str, dict[str, object]], Coroutine[object, object, None]
|
|
795
790
|
],
|
|
@@ -816,7 +811,6 @@ class HandlerFilesystemCrawler:
|
|
|
816
811
|
emitted_at_utc: UTC datetime when the crawl run started.
|
|
817
812
|
crawl_scope: Scope string from the originating crawl tick command.
|
|
818
813
|
trigger_source: What triggered the crawl run.
|
|
819
|
-
env_prefix: Environment prefix for topic construction.
|
|
820
814
|
publish_callback: Async publish callback.
|
|
821
815
|
resolved_mappings: Scope mappings for source_type resolution.
|
|
822
816
|
|
|
@@ -874,7 +868,7 @@ class HandlerFilesystemCrawler:
|
|
|
874
868
|
)
|
|
875
869
|
await _publish_event(
|
|
876
870
|
publish_callback,
|
|
877
|
-
|
|
871
|
+
self._config.publish_topic_removed,
|
|
878
872
|
removed_event.model_dump(mode="json"),
|
|
879
873
|
correlation_id,
|
|
880
874
|
)
|
|
@@ -925,7 +919,7 @@ async def _publish_event(
|
|
|
925
919
|
|
|
926
920
|
Args:
|
|
927
921
|
publish_callback: Caller-supplied async publish function.
|
|
928
|
-
topic: Full topic name
|
|
922
|
+
topic: Full canonical ONEX topic name.
|
|
929
923
|
payload: Serialized event dict.
|
|
930
924
|
correlation_id: Used in error log for traceability.
|
|
931
925
|
"""
|
|
@@ -15,18 +15,12 @@ Architecture:
|
|
|
15
15
|
- Staleness detection for health monitoring
|
|
16
16
|
|
|
17
17
|
Topic Naming:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- ``env_prefix`` is a deployment realm (e.g., ``"dev"``, ``"staging"``,
|
|
21
|
-
``"prod"``) that isolates environments on the same cluster.
|
|
22
|
-
- ``topic_suffix`` contains the ``onex.`` namespace and event path
|
|
23
|
-
(e.g., ``onex.evt.omnimemory.intent-stored.v1``).
|
|
24
|
-
|
|
25
|
-
Resulting topic example: ``dev.onex.evt.omnimemory.intent-stored.v1``
|
|
18
|
+
Topic names use bare canonical ONEX format without environment prefixes.
|
|
19
|
+
Example: ``onex.evt.omnimemory.intent-stored.v1``
|
|
26
20
|
|
|
27
21
|
Consumer Group:
|
|
28
22
|
Derived from node identity per ADR:
|
|
29
|
-
``
|
|
23
|
+
``omnimemory.intent_event_consumer_effect.consume.v1``
|
|
30
24
|
|
|
31
25
|
Contract Format:
|
|
32
26
|
Uses standard ``event_bus.subscribe_topics`` contract format (OMN-1746)
|
|
@@ -56,7 +50,6 @@ Example::
|
|
|
56
50
|
# (event_bus.subscribe is injected by the runtime layer)
|
|
57
51
|
await consumer.initialize(
|
|
58
52
|
subscribe_callback=event_bus.subscribe,
|
|
59
|
-
env_prefix="dev",
|
|
60
53
|
)
|
|
61
54
|
|
|
62
55
|
# Run until shutdown
|
|
@@ -111,14 +104,9 @@ class HandlerIntentEventConsumer:
|
|
|
111
104
|
"""Event bus consumer for intent-classified events.
|
|
112
105
|
|
|
113
106
|
Consumer group is derived from node identity per ADR:
|
|
114
|
-
``{
|
|
107
|
+
``{service}.{node_name}.{purpose}.{version}``
|
|
115
108
|
|
|
116
|
-
Example: ``
|
|
117
|
-
|
|
118
|
-
The ``env_prefix`` parameter is a deployment realm (e.g., ``"dev"``,
|
|
119
|
-
``"staging"``, ``"prod"``) that isolates environments on the same event bus
|
|
120
|
-
cluster. It is separate from the ``onex.`` namespace embedded in topic
|
|
121
|
-
suffixes.
|
|
109
|
+
Example: ``omnimemory.intent_event_consumer_effect.consume.v1``
|
|
122
110
|
|
|
123
111
|
Topic configuration uses list-based fields matching the standard
|
|
124
112
|
``event_bus.subscribe_topics`` contract format (OMN-1746). The first
|
|
@@ -138,7 +126,7 @@ class HandlerIntentEventConsumer:
|
|
|
138
126
|
await storage.initialize(connection_uri="bolt://{OMNIMEMORY_MEMGRAPH_HOST}:{OMNIMEMORY_MEMGRAPH_PORT}")
|
|
139
127
|
|
|
140
128
|
consumer = HandlerIntentEventConsumer(config, storage)
|
|
141
|
-
await consumer.initialize(event_bus_subscribe
|
|
129
|
+
await consumer.initialize(event_bus_subscribe)
|
|
142
130
|
"""
|
|
143
131
|
|
|
144
132
|
def __init__(
|
|
@@ -174,7 +162,6 @@ class HandlerIntentEventConsumer:
|
|
|
174
162
|
|
|
175
163
|
# Event bus publish callback (set during initialize)
|
|
176
164
|
self._publish_callback: Callable[[str, dict[str, object]], None] | None = None
|
|
177
|
-
self._env_prefix: str = "dev"
|
|
178
165
|
|
|
179
166
|
# Track pending tasks to prevent garbage collection (RUF006)
|
|
180
167
|
self._pending_tasks: set[asyncio.Task[None]] = set()
|
|
@@ -207,19 +194,17 @@ class HandlerIntentEventConsumer:
|
|
|
207
194
|
subscribe_callback: Callable[
|
|
208
195
|
[str, Callable[[dict[str, object]], None]], Callable[[], None]
|
|
209
196
|
],
|
|
210
|
-
env_prefix: str = "dev",
|
|
211
197
|
publish_callback: Callable[[str, dict[str, object]], None] | None = None,
|
|
212
198
|
) -> None:
|
|
213
199
|
"""Initialize event bus subscriptions for all configured subscribe_topics.
|
|
214
200
|
|
|
215
|
-
Subscribes to each topic in ``config.subscribe_topics
|
|
216
|
-
|
|
201
|
+
Subscribes to each topic in ``config.subscribe_topics`` using bare
|
|
202
|
+
canonical ONEX topic names.
|
|
217
203
|
|
|
218
204
|
Args:
|
|
219
205
|
subscribe_callback: Function to subscribe to an event bus topic.
|
|
220
206
|
Signature: (topic, handler) -> unsubscribe_fn.
|
|
221
207
|
Injected by the runtime layer (e.g., EventBusKafka.subscribe).
|
|
222
|
-
env_prefix: Environment prefix for topic names (e.g., "dev", "staging").
|
|
223
208
|
publish_callback: Optional callback for publishing events.
|
|
224
209
|
Signature: (topic, message_dict) -> None
|
|
225
210
|
"""
|
|
@@ -240,25 +225,23 @@ class HandlerIntentEventConsumer:
|
|
|
240
225
|
"consumer would initialize with no subscriptions"
|
|
241
226
|
)
|
|
242
227
|
|
|
243
|
-
self._env_prefix = env_prefix
|
|
244
228
|
self._publish_callback = publish_callback
|
|
245
229
|
|
|
246
230
|
failed_topics: list[tuple[str, str]] = []
|
|
247
|
-
for
|
|
248
|
-
full_topic = f"{env_prefix}.{topic_suffix}"
|
|
231
|
+
for topic in self._config.subscribe_topics:
|
|
249
232
|
try:
|
|
250
|
-
unsubscribe = subscribe_callback(
|
|
233
|
+
unsubscribe = subscribe_callback(topic, self._handle_message_sync)
|
|
251
234
|
except Exception as e:
|
|
252
235
|
logger.error(
|
|
253
236
|
"Failed to subscribe to topic",
|
|
254
237
|
extra={
|
|
255
238
|
"handler": HANDLER_ID_INTENT_CONSUMER,
|
|
256
|
-
"topic":
|
|
239
|
+
"topic": topic,
|
|
257
240
|
"error": str(e),
|
|
258
241
|
"error_type": type(e).__name__,
|
|
259
242
|
},
|
|
260
243
|
)
|
|
261
|
-
failed_topics.append((
|
|
244
|
+
failed_topics.append((topic, str(e)))
|
|
262
245
|
continue
|
|
263
246
|
|
|
264
247
|
self._unsubscribe_fns.append(unsubscribe)
|
|
@@ -267,8 +250,7 @@ class HandlerIntentEventConsumer:
|
|
|
267
250
|
"Kafka subscription initialized",
|
|
268
251
|
extra={
|
|
269
252
|
"handler": HANDLER_ID_INTENT_CONSUMER,
|
|
270
|
-
"topic":
|
|
271
|
-
"env_prefix": env_prefix,
|
|
253
|
+
"topic": topic,
|
|
272
254
|
},
|
|
273
255
|
)
|
|
274
256
|
|
|
@@ -555,8 +537,7 @@ class HandlerIntentEventConsumer:
|
|
|
555
537
|
)
|
|
556
538
|
return
|
|
557
539
|
|
|
558
|
-
|
|
559
|
-
topic = f"{self._env_prefix}.{publish_topic}"
|
|
540
|
+
topic = self._config.publish_topics[0]
|
|
560
541
|
try:
|
|
561
542
|
self._publish_callback(topic, event.model_dump(mode="json"))
|
|
562
543
|
logger.debug(
|
|
@@ -615,7 +596,7 @@ class HandlerIntentEventConsumer:
|
|
|
615
596
|
)
|
|
616
597
|
return
|
|
617
598
|
|
|
618
|
-
topic =
|
|
599
|
+
topic = dlq_topic
|
|
619
600
|
dlq_message = {
|
|
620
601
|
"original_message": message,
|
|
621
602
|
"failure_reason": reason,
|
|
@@ -100,9 +100,8 @@ performance:
|
|
|
100
100
|
# NOTE: Using version per ModelEventTypeSubcontract from omnibase_core
|
|
101
101
|
#
|
|
102
102
|
# Topic Naming Convention:
|
|
103
|
-
# -
|
|
104
|
-
# -
|
|
105
|
-
# - Example: dev.onex.cmd.omnimemory.intent-query-requested.v1
|
|
103
|
+
# - Topics use bare canonical ONEX names (no env prefix)
|
|
104
|
+
# - Example: onex.cmd.omnimemory.intent-query-requested.v1
|
|
106
105
|
#
|
|
107
106
|
# Invocation Mode: SUBSCRIPTION
|
|
108
107
|
# - This node subscribes to request topics (runtime dispatches inbound)
|
|
@@ -45,7 +45,7 @@ Example::
|
|
|
45
45
|
parser_version="1.0.0",
|
|
46
46
|
)
|
|
47
47
|
handler = HandlerKreuzbergParse(config=config)
|
|
48
|
-
await handler.process_event(event=event,
|
|
48
|
+
await handler.process_event(event=event, publish_callback=cb)
|
|
49
49
|
|
|
50
50
|
.. versionadded:: 0.5.0
|
|
51
51
|
Initial implementation for OMN-2733.
|
|
@@ -159,7 +159,6 @@ class HandlerKreuzbergParse:
|
|
|
159
159
|
async def process_event(
|
|
160
160
|
self,
|
|
161
161
|
event: ModelDocumentDiscoveredEvent | ModelDocumentChangedEvent,
|
|
162
|
-
env_prefix: str,
|
|
163
162
|
publish_callback: Callable[[str, dict[str, object]], Coroutine[Any, Any, None]],
|
|
164
163
|
) -> ModelKreuzbergParseResult:
|
|
165
164
|
"""Process a single document discovered or changed event.
|
|
@@ -167,8 +166,6 @@ class HandlerKreuzbergParse:
|
|
|
167
166
|
Args:
|
|
168
167
|
event: The triggering document event carrying source_ref and
|
|
169
168
|
content_fingerprint.
|
|
170
|
-
env_prefix: Environment prefix used to build fully-qualified
|
|
171
|
-
topic names (e.g. "dev", "prod").
|
|
172
169
|
publish_callback: Async callable that accepts (topic, payload_dict)
|
|
173
170
|
and publishes the message to the event bus.
|
|
174
171
|
|
|
@@ -180,16 +177,8 @@ class HandlerKreuzbergParse:
|
|
|
180
177
|
content_hash = event.content_fingerprint
|
|
181
178
|
config = self._config
|
|
182
179
|
|
|
183
|
-
indexed_topic =
|
|
184
|
-
|
|
185
|
-
if env_prefix
|
|
186
|
-
else config.publish_topic_indexed
|
|
187
|
-
)
|
|
188
|
-
failed_topic = (
|
|
189
|
-
f"{env_prefix}.{config.publish_topic_parse_failed}"
|
|
190
|
-
if env_prefix
|
|
191
|
-
else config.publish_topic_parse_failed
|
|
192
|
-
)
|
|
180
|
+
indexed_topic = config.publish_topic_indexed
|
|
181
|
+
failed_topic = config.publish_topic_parse_failed
|
|
193
182
|
now = datetime.now(tz=timezone.utc)
|
|
194
183
|
|
|
195
184
|
# Reject paths outside document_root before any filesystem access
|
|
@@ -192,19 +192,21 @@ class PluginMemory:
|
|
|
192
192
|
def should_activate(self, config: ModelDomainPluginConfig) -> bool:
|
|
193
193
|
"""Check if Memory should activate based on environment.
|
|
194
194
|
|
|
195
|
-
Returns True if
|
|
195
|
+
Returns True if OMNIMEMORY_MEMGRAPH_HOST is set (connection config
|
|
196
|
+
presence) or legacy OMNIMEMORY_ENABLED is set, indicating the memory
|
|
196
197
|
domain should be activated for this kernel instance.
|
|
197
198
|
|
|
198
199
|
Args:
|
|
199
200
|
config: Plugin configuration (not used for this check).
|
|
200
201
|
|
|
201
202
|
Returns:
|
|
202
|
-
True if
|
|
203
|
+
True if memory connection config or legacy flag is present.
|
|
203
204
|
"""
|
|
204
|
-
|
|
205
|
-
|
|
205
|
+
memgraph_host = os.getenv("OMNIMEMORY_MEMGRAPH_HOST")
|
|
206
|
+
legacy_flag = os.getenv("OMNIMEMORY_ENABLED")
|
|
207
|
+
if not memgraph_host and not legacy_flag:
|
|
206
208
|
logger.debug(
|
|
207
|
-
"Memory plugin inactive:
|
|
209
|
+
"Memory plugin inactive: OMNIMEMORY_MEMGRAPH_HOST not set "
|
|
208
210
|
"(correlation_id=%s)",
|
|
209
211
|
config.correlation_id,
|
|
210
212
|
)
|
|
@@ -229,7 +231,9 @@ class PluginMemory:
|
|
|
229
231
|
ModelHandshakeResult: Passed if Memgraph is reachable or plugin is
|
|
230
232
|
inactive. Failed with error message if probe times out or is refused.
|
|
231
233
|
"""
|
|
232
|
-
if not os.getenv("
|
|
234
|
+
if not os.getenv("OMNIMEMORY_MEMGRAPH_HOST") and not os.getenv(
|
|
235
|
+
"OMNIMEMORY_ENABLED"
|
|
236
|
+
):
|
|
233
237
|
return ModelHandshakeResult.default_pass(self.plugin_id)
|
|
234
238
|
|
|
235
239
|
host = os.getenv("OMNIMEMORY_MEMGRAPH_HOST", "localhost")
|
|
@@ -808,7 +812,9 @@ class PluginMemory:
|
|
|
808
812
|
Returns:
|
|
809
813
|
Status string indicating enabled state.
|
|
810
814
|
"""
|
|
811
|
-
enabled = os.getenv("
|
|
815
|
+
enabled = os.getenv("OMNIMEMORY_MEMGRAPH_HOST", "") or os.getenv(
|
|
816
|
+
"OMNIMEMORY_ENABLED", ""
|
|
817
|
+
)
|
|
812
818
|
if not enabled:
|
|
813
819
|
return "disabled"
|
|
814
820
|
topics_count = len(MEMORY_SUBSCRIBE_TOPICS)
|
|
@@ -370,17 +370,39 @@ class MemoryServiceSettings(BaseSettings):
|
|
|
370
370
|
# Backend enablement flags
|
|
371
371
|
postgres_enabled: bool = Field(
|
|
372
372
|
default=False,
|
|
373
|
-
description="Enable PostgreSQL backend",
|
|
373
|
+
description="Enable PostgreSQL backend (legacy; prefer setting OMNIMEMORY_DB_URL)",
|
|
374
374
|
)
|
|
375
375
|
qdrant_enabled: bool = Field(
|
|
376
376
|
default=False,
|
|
377
|
-
description="Enable Qdrant backend",
|
|
377
|
+
description="Enable Qdrant backend (legacy; prefer setting OMNIMEMORY__QDRANT__URL)",
|
|
378
378
|
)
|
|
379
379
|
embedding_enabled: bool = Field(
|
|
380
380
|
default=False,
|
|
381
381
|
description="Enable real embedding server (requires EMBEDDING__SERVER_URL)",
|
|
382
382
|
)
|
|
383
383
|
|
|
384
|
+
@property
|
|
385
|
+
def postgres_active(self) -> bool:
|
|
386
|
+
"""Infer PostgreSQL activation from OMNIMEMORY_DB_URL presence or explicit flag.
|
|
387
|
+
|
|
388
|
+
This eliminates the need for a separate OMNIMEMORY__POSTGRES_ENABLED
|
|
389
|
+
env var when the connection URL is already configured. [OMN-5362]
|
|
390
|
+
"""
|
|
391
|
+
import os
|
|
392
|
+
|
|
393
|
+
return self.postgres_enabled or bool(os.getenv("OMNIMEMORY_DB_URL"))
|
|
394
|
+
|
|
395
|
+
@property
|
|
396
|
+
def qdrant_active(self) -> bool:
|
|
397
|
+
"""Infer Qdrant activation from OMNIMEMORY__QDRANT__URL presence or explicit flag.
|
|
398
|
+
|
|
399
|
+
This eliminates the need for a separate OMNIMEMORY__QDRANT_ENABLED
|
|
400
|
+
env var when the Qdrant URL is already configured. [OMN-5362]
|
|
401
|
+
"""
|
|
402
|
+
import os
|
|
403
|
+
|
|
404
|
+
return self.qdrant_enabled or bool(os.getenv("OMNIMEMORY__QDRANT__URL"))
|
|
405
|
+
|
|
384
406
|
# Service-level settings
|
|
385
407
|
service_name: str = Field(
|
|
386
408
|
default="omnimemory",
|
|
@@ -421,13 +443,13 @@ class MemoryServiceSettings(BaseSettings):
|
|
|
421
443
|
postgres_config: ModelPostgresConfig | None = None
|
|
422
444
|
qdrant_config: ModelQdrantConfig | None = None
|
|
423
445
|
|
|
424
|
-
if self.
|
|
446
|
+
if self.postgres_active:
|
|
425
447
|
# BaseSettings loads required fields from environment variables
|
|
426
448
|
# pyright doesn't understand pydantic-settings env var loading
|
|
427
449
|
postgres_settings = PostgresSettings() # pyright: ignore[reportCallIssue]
|
|
428
450
|
postgres_config = postgres_settings.to_config()
|
|
429
451
|
|
|
430
|
-
if self.
|
|
452
|
+
if self.qdrant_active:
|
|
431
453
|
qdrant_settings = QdrantSettings()
|
|
432
454
|
qdrant_config = qdrant_settings.to_config()
|
|
433
455
|
|
|
@@ -133,7 +133,6 @@ async def _run_handler(
|
|
|
133
133
|
):
|
|
134
134
|
await handler.process_event(
|
|
135
135
|
event=event,
|
|
136
|
-
env_prefix="dev",
|
|
137
136
|
publish_callback=_cb,
|
|
138
137
|
)
|
|
139
138
|
|
|
@@ -297,13 +296,11 @@ async def test_idempotent_crawl_no_duplicate_events(tmp_path: Path) -> None:
|
|
|
297
296
|
# First call
|
|
298
297
|
await handler.process_event(
|
|
299
298
|
event=event,
|
|
300
|
-
env_prefix="dev",
|
|
301
299
|
publish_callback=_cb,
|
|
302
300
|
)
|
|
303
301
|
# Second call — same event, same fingerprint
|
|
304
302
|
await handler.process_event(
|
|
305
303
|
event=event,
|
|
306
|
-
env_prefix="dev",
|
|
307
304
|
publish_callback=_cb,
|
|
308
305
|
)
|
|
309
306
|
|