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.
Files changed (497) hide show
  1. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/build-and-push-migrate-image.yml +2 -2
  2. omninode_memory-0.9.0/.github/workflows/omni-standards-compliance.yml +52 -0
  3. omninode_memory-0.9.0/.github/workflows/security-scan.yml +29 -0
  4. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.pre-commit-config.yaml +10 -0
  5. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CHANGELOG.md +16 -0
  6. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/PKG-INFO +4 -4
  7. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/pyproject.toml +14 -6
  8. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_naming.py +3 -1
  9. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/handler_filesystem_crawler.py +7 -13
  10. {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
  11. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +2 -3
  12. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +3 -14
  13. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/plugin.py +13 -7
  14. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/settings.py +26 -4
  15. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -3
  16. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_filesystem_crawler_effect/test_handler_filesystem_crawler.py +5 -39
  17. {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
  18. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +3 -20
  19. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_dispatch_handlers.py +3 -3
  20. omninode_memory-0.9.0/tests/unit/test_entry_points.py +24 -0
  21. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_validate_ci_precommit_alignment.py +1 -0
  22. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/uv.lock +16 -28
  23. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.claude/architecture-handshake.md +0 -0
  24. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.env.example +0 -0
  25. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.flake8 +0 -0
  26. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  27. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  28. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  29. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/dependabot.yml +0 -0
  30. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/required-checks.yaml +0 -0
  31. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/auto-tag-on-merge.yml +0 -0
  32. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/contract-validation.yml +0 -0
  33. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/pre-commit.yml +0 -0
  34. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/release-dry-run.yml +0 -0
  35. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/release.yml +0 -0
  36. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.github/workflows/test.yml +0 -0
  37. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.gitignore +0 -0
  38. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.markdown-link-check.json +0 -0
  39. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.secrets.baseline +0 -0
  40. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.serena/memories/project_overview.md +0 -0
  41. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.serena/memories/suggested_commands.md +0 -0
  42. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.serena/project.yml +0 -0
  43. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/.yamlfmt +0 -0
  44. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/AGENT.md +0 -0
  45. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CLAUDE.md +0 -0
  46. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CODE_OF_CONDUCT.md +0 -0
  47. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/CONTRIBUTING.md +0 -0
  48. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/LICENSE +0 -0
  49. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/README.md +0 -0
  50. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/SECURITY.md +0 -0
  51. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/contract.yaml +0 -0
  52. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
  53. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/002_create_memories_table.sql +0 -0
  54. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
  55. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
  56. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
  57. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
  58. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
  59. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
  60. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/deployment/docker/Dockerfile.migrate +0 -0
  61. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docker-compose.prod.yml +0 -0
  62. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docker-compose.yml +0 -0
  63. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/INDEX.md +0 -0
  64. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/PERFORMANCE_TESTING.md +0 -0
  65. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/architecture/ARCH_002_KAFKA_ABSTRACTION.md +0 -0
  66. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/architecture/ONEX_FOUR_NODE_ARCHITECTURE.md +0 -0
  67. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/ci/CI_MONITORING_GUIDE.md +0 -0
  68. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/db-split/fk-audit-omn-2069.md +0 -0
  69. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/environment_variables.md +0 -0
  70. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/handler_reuse_matrix.md +0 -0
  71. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/pii_handling.md +0 -0
  72. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/runtime/RUNTIME_PLUGINS.md +0 -0
  73. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/docs/stub_protocols.md +0 -0
  74. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/examples/__init__.py +0 -0
  75. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/examples/advanced_architecture_demo.py +0 -0
  76. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/pyrightconfig.json +0 -0
  77. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/check_migration_freeze.sh +0 -0
  78. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/check_no_hardcoded_bolt.sh +0 -0
  79. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validate_ci_precommit_alignment.py +0 -0
  80. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validate_no_transport_imports.py +0 -0
  81. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/check_ai_slop.py +0 -0
  82. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
  83. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_enum_casing.py +0 -0
  84. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_http_imports.py +0 -0
  85. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_kafka_imports.py +0 -0
  86. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_model_locations.py +0 -0
  87. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_no_backward_compatibility.py +0 -0
  88. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_pydantic_patterns.py +0 -0
  89. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_secrets.py +0 -0
  90. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_single_class_per_file.py +0 -0
  91. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/scripts/validation/validate_spdx_headers.py +0 -0
  92. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/__init__.py +0 -0
  93. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/_compat_imports.py +0 -0
  94. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/audit/__init__.py +0 -0
  95. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/audit/__main__.py +0 -0
  96. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/audit/io_audit.py +0 -0
  97. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/bootstrap.py +0 -0
  98. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/__init__.py +0 -0
  99. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/__init__.py +0 -0
  100. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
  101. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
  102. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
  103. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
  104. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_context_item_type.py +0 -0
  105. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_data_type.py +0 -0
  106. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
  107. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_error_code.py +0 -0
  108. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
  109. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
  110. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
  111. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
  112. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_migration_status.py +0 -0
  113. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_node_type.py +0 -0
  114. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_operation_status.py +0 -0
  115. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_priority_level.py +0 -0
  116. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
  117. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
  118. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_severity.py +0 -0
  119. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_subscription_status.py +0 -0
  120. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/enums/enum_trust_level.py +0 -0
  121. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/errors/__init__.py +0 -0
  122. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/errors/embedding_errors.py +0 -0
  123. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/__init__.py +0 -0
  124. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/__init__.py +0 -0
  125. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
  126. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +0 -0
  127. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
  128. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
  129. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
  130. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
  131. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
  132. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
  133. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
  134. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/handler_intent.py +0 -0
  135. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/handler_subscription.py +0 -0
  136. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/models/__init__.py +0 -0
  137. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
  138. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/__init__.py +0 -0
  139. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/__init__.py +0 -0
  140. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
  141. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
  142. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
  143. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
  144. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
  145. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
  146. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
  147. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/__init__.py +0 -0
  148. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
  149. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_embedding_config.py +0 -0
  150. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
  151. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
  152. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
  153. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
  154. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
  155. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_postgres_config.py +0 -0
  156. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
  157. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
  158. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
  159. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
  160. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
  161. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/container/__init__.py +0 -0
  162. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/__init__.py +0 -0
  163. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
  164. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
  165. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
  166. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
  167. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
  168. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/__init__.py +0 -0
  169. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_context.py +0 -0
  170. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
  171. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
  172. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_request.py +0 -0
  173. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_memory_response.py +0 -0
  174. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
  175. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
  176. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/core/model_provenance.py +0 -0
  177. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/__init__.py +0 -0
  178. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_crawl_state_record.py +0 -0
  179. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
  180. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
  181. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
  182. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
  183. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
  184. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
  185. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
  186. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/crawl/types.py +0 -0
  187. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/events/__init__.py +0 -0
  188. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
  189. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
  190. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/__init__.py +0 -0
  191. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
  192. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_configuration.py +0 -0
  193. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
  194. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_error_details.py +0 -0
  195. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
  196. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_health_response.py +0 -0
  197. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
  198. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
  199. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
  200. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_notes.py +0 -0
  201. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_priority.py +0 -0
  202. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
  203. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_semver.py +0 -0
  204. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
  205. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_system_health.py +0 -0
  206. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_tags.py +0 -0
  207. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
  208. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
  209. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/foundation/model_user.py +0 -0
  210. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/__init__.py +0 -0
  211. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
  212. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
  213. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
  214. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
  215. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
  216. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/__init__.py +0 -0
  217. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_item.py +0 -0
  218. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_query.py +0 -0
  219. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
  220. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
  221. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
  222. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/__init__.py +0 -0
  223. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
  224. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
  225. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
  226. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/__init__.py +0 -0
  227. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/model_service_config.py +0 -0
  228. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/model_service_health.py +0 -0
  229. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/service/model_service_registry.py +0 -0
  230. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/__init__.py +0 -0
  231. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/constants.py +0 -0
  232. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
  233. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
  234. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/subscription/model_subscription.py +0 -0
  235. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/__init__.py +0 -0
  236. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_audit.py +0 -0
  237. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
  238. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
  239. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_concurrency.py +0 -0
  240. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
  241. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
  242. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
  243. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
  244. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_health_status.py +0 -0
  245. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
  246. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
  247. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_match.py +0 -0
  248. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
  249. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_pii_type.py +0 -0
  250. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
  251. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
  252. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_retry_config.py +0 -0
  253. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
  254. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
  255. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/models/utils/model_system_health.py +0 -0
  256. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/__init__.py +0 -0
  257. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/base.py +0 -0
  258. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
  259. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
  260. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
  261. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
  262. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
  263. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
  264. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/contract.yaml +0 -0
  265. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/__init__.py +0 -0
  266. {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
  267. {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
  268. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
  269. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/contract.yaml +0 -0
  270. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/__init__.py +0 -0
  271. {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
  272. {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
  273. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/__init__.py +0 -0
  274. {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
  275. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
  276. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
  277. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
  278. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
  279. {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
  280. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
  281. {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
  282. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/utils/__init__.py +0 -0
  283. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_query_effect/utils/util_intent_mapping.py +0 -0
  284. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
  285. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
  286. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
  287. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +0 -0
  288. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
  289. {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
  290. {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
  291. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
  292. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/__init__.py +0 -0
  293. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/client_kreuzberg.py +0 -0
  294. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
  295. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
  296. {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
  297. {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
  298. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
  299. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
  300. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
  301. {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
  302. {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
  303. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +0 -0
  304. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
  305. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
  306. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
  307. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
  308. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
  309. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
  310. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
  311. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  312. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/__init__.py +0 -0
  313. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/embedding_client.py +0 -0
  314. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
  315. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
  316. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
  317. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
  318. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
  319. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
  320. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
  321. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
  322. {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
  323. {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
  324. {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
  325. {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
  326. {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
  327. {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
  328. {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
  329. {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
  330. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
  331. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
  332. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
  333. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
  334. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
  335. {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
  336. {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
  337. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
  338. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
  339. {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
  340. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
  341. {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
  342. {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
  343. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
  344. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
  345. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
  346. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +0 -0
  347. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
  348. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
  349. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
  350. {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
  351. {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
  352. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
  353. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
  354. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +0 -0
  355. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
  356. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
  357. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
  358. {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
  359. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
  360. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
  361. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
  362. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/nodes/node_statistics_reducer/__init__.py +0 -0
  363. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/__init__.py +0 -0
  364. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/base_protocols.py +0 -0
  365. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/data_models.py +0 -0
  366. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/error_models.py +0 -0
  367. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_crawl_state_repository.py +0 -0
  368. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_embedding.py +0 -0
  369. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
  370. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
  371. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
  372. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
  373. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/__init__.py +0 -0
  374. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/adapters.py +0 -0
  375. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/contract_topics.py +0 -0
  376. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/dispatch_handlers.py +0 -0
  377. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/introspection.py +0 -0
  378. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/message_type_registration.py +0 -0
  379. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/runtime/wiring.py +0 -0
  380. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/secrets.py +0 -0
  381. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/__init__.py +0 -0
  382. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/contract_linter.py +0 -0
  383. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/stubs/__init__.py +0 -0
  384. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/tools/stubs/contract_validator.py +0 -0
  385. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/__init__.py +0 -0
  386. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/audit_logger.py +0 -0
  387. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/concurrency.py +0 -0
  388. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/db_url.py +0 -0
  389. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/error_sanitizer.py +0 -0
  390. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/handler_constants.py +0 -0
  391. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/health_manager.py +0 -0
  392. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/observability.py +0 -0
  393. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/pii_detector.py +0 -0
  394. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/resource_manager.py +0 -0
  395. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/src/omnimemory/utils/retry_utils.py +0 -0
  396. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/__init__.py +0 -0
  397. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/audit/io_audit_whitelist.yaml +0 -0
  398. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/audit/transport_import_whitelist.yaml +0 -0
  399. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/conftest.py +0 -0
  400. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/__init__.py +0 -0
  401. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/__init__.py +0 -0
  402. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
  403. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
  404. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
  405. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
  406. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
  407. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
  408. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/test_handler_intent.py +0 -0
  409. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/handlers/test_handler_semantic_compute.py +0 -0
  410. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/__init__.py +0 -0
  411. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/conftest.py +0 -0
  412. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/__init__.py +0 -0
  413. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
  414. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
  415. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_entry_point_discovery.py +0 -0
  416. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
  417. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_handler_subscription.py +0 -0
  418. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/integration/test_node_agent_coordinator.py +0 -0
  419. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/__init__.py +0 -0
  420. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/contracts/__init__.py +0 -0
  421. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/contracts/test_extended_contracts.py +0 -0
  422. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/events/__init__.py +0 -0
  423. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/events/test_model_intent_classified_event.py +0 -0
  424. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/models/test_frozen_boundary_models.py +0 -0
  425. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/__init__.py +0 -0
  426. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
  427. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
  428. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/test_model_consumer_health.py +0 -0
  429. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_event_consumer_effect/test_util_event_mapper.py +0 -0
  430. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
  431. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
  432. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
  433. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
  434. {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
  435. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  436. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
  437. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
  438. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
  439. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
  440. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
  441. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_similarity_compute/__init__.py +0 -0
  442. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
  443. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_bootstrap.py +0 -0
  444. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_concurrency.py +0 -0
  445. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_config_models.py +0 -0
  446. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_contract_validation.py +0 -0
  447. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_contract_version.py +0 -0
  448. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_db_url.py +0 -0
  449. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_foundation.py +0 -0
  450. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_health_manager.py +0 -0
  451. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_migration_progress.py +0 -0
  452. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_node_enforcement.py +0 -0
  453. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_node_imports.py +0 -0
  454. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_observability_metrics.py +0 -0
  455. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_performance.py +0 -0
  456. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_resource_manager.py +0 -0
  457. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_secrets_provider.py +0 -0
  458. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_semantic_compute_policy_config.py +0 -0
  459. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_settings.py +0 -0
  460. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/test_validation_scripts.py +0 -0
  461. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/__init__.py +0 -0
  462. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/__init__.py +0 -0
  463. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/adapters/__init__.py +0 -0
  464. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
  465. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/handlers/test_subscription_typing.py +0 -0
  466. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/__init__.py +0 -0
  467. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_handler_qdrant.py +0 -0
  468. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
  469. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
  470. {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
  471. {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
  472. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
  473. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
  474. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
  475. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
  476. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
  477. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/__init__.py +0 -0
  478. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/conftest.py +0 -0
  479. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_adapters.py +0 -0
  480. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_contract_topics.py +0 -0
  481. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_introspection.py +0 -0
  482. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_message_type_registration.py +0 -0
  483. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_plugin.py +0 -0
  484. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
  485. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/runtime/test_wiring.py +0 -0
  486. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_contract_linter.py +0 -0
  487. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
  488. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_ingestion_models.py +0 -0
  489. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_io_audit.py +0 -0
  490. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_scope_mapping_config.py +0 -0
  491. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_sql_placeholders.py +0 -0
  492. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_validate_kafka_imports.py +0 -0
  493. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/tests/unit/test_validate_no_transport_imports.py +0 -0
  494. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_architecture_improvements.py +0 -0
  495. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_foundation.py +0 -0
  496. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_foundation_isolated.py +0 -0
  497. {omninode_memory-0.8.0 → omninode_memory-0.9.0}/validate_foundation_minimal.py +0 -0
@@ -24,8 +24,8 @@ jobs:
24
24
  runs-on: ubuntu-latest
25
25
  timeout-minutes: 15
26
26
  steps:
27
- - uses: actions/checkout@v4
28
- - uses: aws-actions/configure-aws-credentials@v4
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.8.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.28.0
24
- Requires-Dist: omnibase-infra==0.20.1
25
- Requires-Dist: omnibase-spi==0.17.1
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.8.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.28.0",
63
- "omnibase-spi==0.17.1",
64
- "omnibase-infra==0.20.1",
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.28.0",
364
- "omnibase-spi==0.17.1",
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(filepath: Path) -> list[Violation]: # stub-ok: docstring uses ModelXxx/ServiceXxx as naming examples, not TODO markers
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: (full_topic, message_dict) -> Coroutine[..., None].
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
- f"{env_prefix}.{self._config.publish_topic_discovered}",
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
- f"{env_prefix}.{self._config.publish_topic_indexed}",
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
- f"{env_prefix}.{self._config.publish_topic_changed}",
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
- f"{env_prefix}.{self._config.publish_topic_indexed}",
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
- f"{env_prefix}.{self._config.publish_topic_removed}",
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 (env prefix already applied).
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
- Full topic names are constructed as ``{env_prefix}.{topic_suffix}`` where:
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
- ``{env_prefix}.omnimemory.intent_event_consumer_effect.consume.v1``
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
- ``{env_prefix}.{service}.{node_name}.{purpose}.{version}``
107
+ ``{service}.{node_name}.{purpose}.{version}``
115
108
 
116
- Example: ``dev.omnimemory.intent_event_consumer_effect.consume.v1``
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, "dev")
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``, constructing
216
- full topic names as ``{env_prefix}.{topic_suffix}``.
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 topic_suffix in self._config.subscribe_topics:
248
- full_topic = f"{env_prefix}.{topic_suffix}"
231
+ for topic in self._config.subscribe_topics:
249
232
  try:
250
- unsubscribe = subscribe_callback(full_topic, self._handle_message_sync)
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": full_topic,
239
+ "topic": topic,
257
240
  "error": str(e),
258
241
  "error_type": type(e).__name__,
259
242
  },
260
243
  )
261
- failed_topics.append((full_topic, str(e)))
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": full_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
- publish_topic = self._config.publish_topics[0]
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 = f"{self._env_prefix}.{dlq_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
- # - These are SUFFIXES only (no env prefix like "dev.")
104
- # - Runtime composes full topic: f"{topic_env_prefix}.{suffix}"
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, env_prefix="dev", publish_callback=cb)
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
- f"{env_prefix}.{config.publish_topic_indexed}"
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 OMNIMEMORY_ENABLED is set, indicating the memory
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 OMNIMEMORY_ENABLED environment variable is set.
203
+ True if memory connection config or legacy flag is present.
203
204
  """
204
- enabled = os.getenv("OMNIMEMORY_ENABLED")
205
- if not enabled:
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: OMNIMEMORY_ENABLED not set "
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("OMNIMEMORY_ENABLED"):
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("OMNIMEMORY_ENABLED", "")
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.postgres_enabled:
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.qdrant_enabled:
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