omninode-memory 0.12.2__tar.gz → 0.14.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 (507) hide show
  1. omninode_memory-0.14.0/.github/workflows/auto-merge.yml +30 -0
  2. omninode_memory-0.14.0/.github/workflows/codeql.yml +23 -0
  3. omninode_memory-0.14.0/.github/workflows/pr-title-check.yml +15 -0
  4. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/CHANGELOG.md +23 -0
  5. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/PKG-INFO +2 -2
  6. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/pyproject.toml +3 -3
  7. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/dispatch_handlers.py +350 -17
  8. omninode_memory-0.14.0/src/omnimemory/runtime/handler_lifecycle.py +89 -0
  9. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/plugin.py +68 -0
  10. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/wiring.py +25 -1
  11. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_plugin.py +15 -4
  12. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +10 -0
  13. omninode_memory-0.14.0/tests/unit/runtime/test_plugin_integration_wiring.py +363 -0
  14. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_wiring.py +2 -1
  15. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/uv.lock +6 -6
  16. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.claude/architecture-handshake.md +0 -0
  17. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.env.example +0 -0
  18. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.flake8 +0 -0
  19. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  21. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  22. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/dependabot.yml +0 -0
  23. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/required-checks.yaml +0 -0
  24. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/auto-tag-on-merge.yml +0 -0
  25. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/build-and-push-migrate-image.yml +0 -0
  26. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/check-handshake.yml +0 -0
  27. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/ci.yml +0 -0
  28. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/contract-validation.yml +0 -0
  29. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/omni-standards-compliance.yml +0 -0
  30. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/pre-commit.yml +0 -0
  31. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/release-dry-run.yml +0 -0
  32. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/release.yml +0 -0
  33. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/security-scan.yml +0 -0
  34. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/stale-todo-gate.yml +0 -0
  35. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.github/workflows/todo-audit-on-merge.yml +0 -0
  36. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.gitignore +0 -0
  37. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.markdown-link-check.json +0 -0
  38. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.pre-commit-config.yaml +0 -0
  39. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.secrets.baseline +0 -0
  40. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.serena/memories/project_overview.md +0 -0
  41. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.serena/memories/suggested_commands.md +0 -0
  42. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.serena/project.yml +0 -0
  43. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/.yamlfmt +0 -0
  44. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/AGENT.md +0 -0
  45. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/CLAUDE.md +0 -0
  46. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/CODE_OF_CONDUCT.md +0 -0
  47. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/CONTRIBUTING.md +0 -0
  48. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/LICENSE +0 -0
  49. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/README.md +0 -0
  50. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/SECURITY.md +0 -0
  51. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/contract.yaml +0 -0
  52. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
  53. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations/002_create_memories_table.sql +0 -0
  54. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
  55. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
  56. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
  57. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
  58. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
  59. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
  60. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/deployment/docker/Dockerfile.migrate +0 -0
  61. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docker-compose.prod.yml +0 -0
  62. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docker-compose.yml +0 -0
  63. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/INDEX.md +0 -0
  64. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/PERFORMANCE_TESTING.md +0 -0
  65. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/architecture/ARCH_002_KAFKA_ABSTRACTION.md +0 -0
  66. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/architecture/ONEX_FOUR_NODE_ARCHITECTURE.md +0 -0
  67. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/ci/CI_MONITORING_GUIDE.md +0 -0
  68. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/db-split/fk-audit-omn-2069.md +0 -0
  69. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/environment_variables.md +0 -0
  70. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/handler_reuse_matrix.md +0 -0
  71. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/pii_handling.md +0 -0
  72. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/runtime/RUNTIME_PLUGINS.md +0 -0
  73. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/docs/stub_protocols.md +0 -0
  74. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/examples/__init__.py +0 -0
  75. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/examples/advanced_architecture_demo.py +0 -0
  76. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/pyrightconfig.json +0 -0
  77. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/check_migration_freeze.sh +0 -0
  78. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/check_no_hardcoded_bolt.sh +0 -0
  79. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validate_ci_precommit_alignment.py +0 -0
  80. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validate_no_transport_imports.py +0 -0
  81. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/check_ai_slop.py +0 -0
  82. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
  83. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_enum_casing.py +0 -0
  84. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_http_imports.py +0 -0
  85. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_kafka_imports.py +0 -0
  86. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_model_locations.py +0 -0
  87. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_naming.py +0 -0
  88. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_no_backward_compatibility.py +0 -0
  89. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_pydantic_patterns.py +0 -0
  90. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_secrets.py +0 -0
  91. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_single_class_per_file.py +0 -0
  92. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/scripts/validation/validate_spdx_headers.py +0 -0
  93. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/__init__.py +0 -0
  94. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/_compat_imports.py +0 -0
  95. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/audit/__init__.py +0 -0
  96. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/audit/__main__.py +0 -0
  97. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/audit/io_audit.py +0 -0
  98. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/bootstrap.py +0 -0
  99. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/__init__.py +0 -0
  100. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/crawl/__init__.py +0 -0
  101. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
  102. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
  103. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
  104. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
  105. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_context_item_type.py +0 -0
  106. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_data_type.py +0 -0
  107. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
  108. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_error_code.py +0 -0
  109. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
  110. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
  111. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
  112. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
  113. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_migration_status.py +0 -0
  114. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_node_type.py +0 -0
  115. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_operation_status.py +0 -0
  116. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_priority_level.py +0 -0
  117. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
  118. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
  119. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_severity.py +0 -0
  120. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_subscription_status.py +0 -0
  121. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/enums/enum_trust_level.py +0 -0
  122. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/errors/__init__.py +0 -0
  123. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/errors/embedding_errors.py +0 -0
  124. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/__init__.py +0 -0
  125. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/__init__.py +0 -0
  126. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
  127. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +0 -0
  128. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
  129. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
  130. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
  131. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
  132. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
  133. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
  134. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
  135. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/handler_intent.py +0 -0
  136. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/handler_subscription.py +0 -0
  137. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/models/__init__.py +0 -0
  138. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
  139. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/__init__.py +0 -0
  140. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/__init__.py +0 -0
  141. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
  142. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
  143. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
  144. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
  145. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
  146. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
  147. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
  148. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/__init__.py +0 -0
  149. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
  150. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_embedding_config.py +0 -0
  151. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
  152. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
  153. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
  154. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
  155. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
  156. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_postgres_config.py +0 -0
  157. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
  158. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
  159. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
  160. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
  161. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
  162. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/container/__init__.py +0 -0
  163. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/contracts/__init__.py +0 -0
  164. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
  165. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
  166. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
  167. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
  168. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
  169. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/__init__.py +0 -0
  170. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_memory_context.py +0 -0
  171. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
  172. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
  173. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_memory_request.py +0 -0
  174. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_memory_response.py +0 -0
  175. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
  176. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
  177. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/core/model_provenance.py +0 -0
  178. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/__init__.py +0 -0
  179. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_crawl_state_record.py +0 -0
  180. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
  181. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
  182. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
  183. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
  184. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
  185. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
  186. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
  187. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/crawl/types.py +0 -0
  188. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/events/__init__.py +0 -0
  189. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
  190. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
  191. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/__init__.py +0 -0
  192. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
  193. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_configuration.py +0 -0
  194. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
  195. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_error_details.py +0 -0
  196. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
  197. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_health_response.py +0 -0
  198. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
  199. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
  200. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
  201. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_notes.py +0 -0
  202. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_priority.py +0 -0
  203. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
  204. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_semver.py +0 -0
  205. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
  206. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_system_health.py +0 -0
  207. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_tags.py +0 -0
  208. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
  209. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
  210. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/foundation/model_user.py +0 -0
  211. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/intelligence/__init__.py +0 -0
  212. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
  213. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
  214. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
  215. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
  216. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
  217. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/memory/__init__.py +0 -0
  218. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/memory/model_memory_item.py +0 -0
  219. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/memory/model_memory_query.py +0 -0
  220. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
  221. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
  222. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
  223. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/scoring/__init__.py +0 -0
  224. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
  225. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
  226. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
  227. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/service/__init__.py +0 -0
  228. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/service/model_service_config.py +0 -0
  229. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/service/model_service_health.py +0 -0
  230. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/service/model_service_registry.py +0 -0
  231. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/subscription/__init__.py +0 -0
  232. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/subscription/constants.py +0 -0
  233. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
  234. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
  235. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/subscription/model_subscription.py +0 -0
  236. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/__init__.py +0 -0
  237. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_audit.py +0 -0
  238. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
  239. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
  240. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_concurrency.py +0 -0
  241. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
  242. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
  243. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
  244. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
  245. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_health_status.py +0 -0
  246. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
  247. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
  248. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_pii_match.py +0 -0
  249. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
  250. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_pii_type.py +0 -0
  251. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
  252. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
  253. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_retry_config.py +0 -0
  254. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
  255. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
  256. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/models/utils/model_system_health.py +0 -0
  257. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/__init__.py +0 -0
  258. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/base.py +0 -0
  259. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
  260. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
  261. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
  262. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
  263. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
  264. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
  265. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/contract.yaml +0 -0
  266. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/handler_filesystem_crawler.py +0 -0
  267. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/__init__.py +0 -0
  268. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/model_filesystem_crawl_result.py +0 -0
  269. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/model_filesystem_crawler_config.py +0 -0
  270. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
  271. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/contract.yaml +0 -0
  272. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/handler_intent_event_consumer.py +0 -0
  273. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/__init__.py +0 -0
  274. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/model_consumer_config.py +0 -0
  275. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/model_consumer_health.py +0 -0
  276. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/__init__.py +0 -0
  277. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/util_event_mapper.py +0 -0
  278. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
  279. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +0 -0
  280. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
  281. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
  282. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
  283. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
  284. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
  285. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
  286. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/utils/__init__.py +0 -0
  287. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_query_effect/utils/util_intent_mapping.py +0 -0
  288. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
  289. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
  290. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
  291. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +0 -0
  292. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
  293. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
  294. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
  295. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
  296. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/__init__.py +0 -0
  297. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/client_kreuzberg.py +0 -0
  298. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
  299. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
  300. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
  301. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
  302. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
  303. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
  304. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
  305. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
  306. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
  307. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
  308. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +0 -0
  309. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
  310. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
  311. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
  312. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
  313. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
  314. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
  315. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
  316. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  317. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/__init__.py +0 -0
  318. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/embedding_client.py +0 -0
  319. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
  320. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
  321. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
  322. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
  323. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
  324. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
  325. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
  326. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
  327. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
  328. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
  329. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
  330. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
  331. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
  332. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
  333. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
  334. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
  335. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
  336. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
  337. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
  338. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
  339. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
  340. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
  341. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
  342. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
  343. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
  344. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
  345. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
  346. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
  347. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
  348. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
  349. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
  350. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
  351. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +0 -0
  352. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
  353. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
  354. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
  355. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
  356. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
  357. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
  358. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
  359. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +0 -0
  360. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
  361. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
  362. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
  363. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
  364. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
  365. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
  366. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
  367. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/nodes/node_statistics_reducer/__init__.py +0 -0
  368. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/__init__.py +0 -0
  369. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/base_protocols.py +0 -0
  370. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/data_models.py +0 -0
  371. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/error_models.py +0 -0
  372. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/protocol_crawl_state_repository.py +0 -0
  373. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/protocol_embedding.py +0 -0
  374. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
  375. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
  376. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
  377. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
  378. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/__init__.py +0 -0
  379. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/adapters.py +0 -0
  380. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/contract_topics.py +0 -0
  381. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/introspection.py +0 -0
  382. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/runtime/message_type_registration.py +0 -0
  383. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/secrets.py +0 -0
  384. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/settings.py +0 -0
  385. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/tools/__init__.py +0 -0
  386. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/tools/contract_linter.py +0 -0
  387. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/tools/stubs/__init__.py +0 -0
  388. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/tools/stubs/contract_validator.py +0 -0
  389. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/__init__.py +0 -0
  390. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/audit_logger.py +0 -0
  391. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/concurrency.py +0 -0
  392. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/db_url.py +0 -0
  393. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/error_sanitizer.py +0 -0
  394. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/handler_constants.py +0 -0
  395. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/health_manager.py +0 -0
  396. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/observability.py +0 -0
  397. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/pii_detector.py +0 -0
  398. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/resource_manager.py +0 -0
  399. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/src/omnimemory/utils/retry_utils.py +0 -0
  400. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/__init__.py +0 -0
  401. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/audit/io_audit_whitelist.yaml +0 -0
  402. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/audit/transport_import_whitelist.yaml +0 -0
  403. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/conftest.py +0 -0
  404. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/__init__.py +0 -0
  405. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/__init__.py +0 -0
  406. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
  407. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
  408. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
  409. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
  410. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
  411. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
  412. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/test_handler_intent.py +0 -0
  413. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/handlers/test_handler_semantic_compute.py +0 -0
  414. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/__init__.py +0 -0
  415. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/conftest.py +0 -0
  416. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/nodes/__init__.py +0 -0
  417. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
  418. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
  419. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
  420. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/test_entry_point_discovery.py +0 -0
  421. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
  422. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/test_handler_subscription.py +0 -0
  423. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/integration/test_node_agent_coordinator.py +0 -0
  424. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/models/__init__.py +0 -0
  425. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/models/contracts/__init__.py +0 -0
  426. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/models/contracts/test_extended_contracts.py +0 -0
  427. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/models/events/__init__.py +0 -0
  428. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/models/events/test_model_intent_classified_event.py +0 -0
  429. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/models/test_frozen_boundary_models.py +0 -0
  430. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/__init__.py +0 -0
  431. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
  432. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_filesystem_crawler_effect/test_handler_filesystem_crawler.py +0 -0
  433. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
  434. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_event_consumer_effect/test_handler_intent_event_consumer.py +0 -0
  435. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_event_consumer_effect/test_model_consumer_health.py +0 -0
  436. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_event_consumer_effect/test_util_event_mapper.py +0 -0
  437. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
  438. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
  439. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
  440. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
  441. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
  442. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  443. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
  444. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
  445. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
  446. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
  447. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
  448. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_similarity_compute/__init__.py +0 -0
  449. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
  450. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_bootstrap.py +0 -0
  451. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_concurrency.py +0 -0
  452. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_config_models.py +0 -0
  453. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_contract_validation.py +0 -0
  454. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_contract_version.py +0 -0
  455. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_db_url.py +0 -0
  456. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_foundation.py +0 -0
  457. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_health_manager.py +0 -0
  458. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_migration_progress.py +0 -0
  459. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_node_enforcement.py +0 -0
  460. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_node_imports.py +0 -0
  461. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_observability_metrics.py +0 -0
  462. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_performance.py +0 -0
  463. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_resource_manager.py +0 -0
  464. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_secrets_provider.py +0 -0
  465. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_semantic_compute_policy_config.py +0 -0
  466. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_settings.py +0 -0
  467. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/test_validation_scripts.py +0 -0
  468. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/__init__.py +0 -0
  469. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/handlers/__init__.py +0 -0
  470. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/handlers/adapters/__init__.py +0 -0
  471. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
  472. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/handlers/test_subscription_typing.py +0 -0
  473. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/__init__.py +0 -0
  474. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_handler_qdrant.py +0 -0
  475. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
  476. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
  477. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
  478. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
  479. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
  480. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
  481. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
  482. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
  483. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
  484. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
  485. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/__init__.py +0 -0
  486. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/conftest.py +0 -0
  487. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_adapters.py +0 -0
  488. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_contract_topics.py +0 -0
  489. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_dispatch_handlers.py +0 -0
  490. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_introspection.py +0 -0
  491. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_message_type_registration.py +0 -0
  492. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
  493. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_contract_linter.py +0 -0
  494. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_dispatch_retrieval_config.py +0 -0
  495. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_entry_points.py +0 -0
  496. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
  497. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_ingestion_models.py +0 -0
  498. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_io_audit.py +0 -0
  499. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_scope_mapping_config.py +0 -0
  500. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_sql_placeholders.py +0 -0
  501. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_validate_ci_precommit_alignment.py +0 -0
  502. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_validate_kafka_imports.py +0 -0
  503. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/tests/unit/test_validate_no_transport_imports.py +0 -0
  504. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/validate_architecture_improvements.py +0 -0
  505. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/validate_foundation.py +0 -0
  506. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/validate_foundation_isolated.py +0 -0
  507. {omninode_memory-0.12.2 → omninode_memory-0.14.0}/validate_foundation_minimal.py +0 -0
@@ -0,0 +1,30 @@
1
+ # SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ # OMN-6571: Automatically enable auto-merge (squash) on every PR opened
5
+ # by jonahgabriel. Ensures PRs do not sit idle in the merge queue waiting
6
+ # for manual enrollment.
7
+ name: Auto-Merge
8
+
9
+ on:
10
+ pull_request:
11
+ types: [opened, reopened, ready_for_review]
12
+
13
+ permissions:
14
+ contents: write
15
+ pull-requests: write
16
+
17
+ jobs:
18
+ auto-merge:
19
+ name: Enable Auto-Merge
20
+ runs-on: ubuntu-latest
21
+ if: github.actor == 'jonahgabriel'
22
+ steps:
23
+ # continue-on-error: merge queue re-triggers this workflow, and
24
+ # gh pr merge fails with "already enqueued" — that is expected.
25
+ - name: Enable auto-merge (squash)
26
+ continue-on-error: true
27
+ run: gh pr merge "${{ github.event.pull_request.number }}" --auto --squash
28
+ env:
29
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
+
@@ -0,0 +1,23 @@
1
+ # SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ # CodeQL caller workflow — delegates to onex_change_control reusable workflow.
5
+ # OMN-5412
6
+ name: CodeQL
7
+
8
+ on:
9
+ push:
10
+ branches: [main]
11
+ pull_request:
12
+ branches: [main]
13
+ schedule:
14
+ - cron: "0 6 * * 1" # Weekly Monday 6am UTC
15
+
16
+ jobs:
17
+ codeql:
18
+ uses: OmniNode-ai/onex_change_control/.github/workflows/codeql-reusable.yml@main
19
+ permissions:
20
+ actions: read
21
+ contents: read
22
+ security-events: write
23
+
@@ -0,0 +1,15 @@
1
+ # SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
2
+ # SPDX-License-Identifier: MIT
3
+ # OMN-6912
4
+
5
+ name: PR Title Check
6
+
7
+ on:
8
+ pull_request:
9
+ types: [opened, edited]
10
+
11
+ jobs:
12
+ pr-title:
13
+ uses: OmniNode-ai/onex_change_control/.github/workflows/pr-title-check-reusable.yml@main
14
+ permissions:
15
+ pull-requests: read
@@ -1,3 +1,26 @@
1
+ ## v0.14.0 (2026-03-30)
2
+
3
+ ### Changed
4
+ - release: omnimemory v0.14.0 coordinated release
5
+ - chore(deps): bump omnibase-core to 0.35.0, omnibase-infra to 0.30.0
6
+
7
+ ### Dependencies
8
+ - omnibase-core 0.34.0 -> 0.35.0
9
+ - omnibase-infra 0.29.0 -> 0.30.0
10
+
11
+ ## v0.13.0 (2026-03-28)
12
+
13
+ ### Added
14
+ - ci: add CodeQL security scanning workflow [OMN-5412] (#214)
15
+ - feat(ci): add auto-merge-on-open workflow [OMN-6571] (#213)
16
+ - feat(runtime): wire AdapterGraphMemory into PluginMemory [OMN-6578] (#211)
17
+
18
+ ### Changed
19
+ - chore(deps): bump omnibase-core to 0.34.0
20
+
21
+ ### Dependencies
22
+ - omnibase-core 0.33.1 -> 0.34.0
23
+
1
24
  ## v0.12.2 (2026-03-27)
2
25
 
3
26
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omninode-memory
3
- Version: 0.12.2
3
+ Version: 0.14.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,7 +20,7 @@ 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.33.1
23
+ Requires-Dist: omnibase-core==0.34.0
24
24
  Requires-Dist: omnibase-infra==0.28.0
25
25
  Requires-Dist: omnibase-spi>=0.19.1
26
26
  Requires-Dist: pinecone-client<7.0.0,>=4.1.0
@@ -7,7 +7,7 @@ build-backend = "hatchling.build"
7
7
 
8
8
  [project]
9
9
  name = "omninode-memory"
10
- version = "0.12.2"
10
+ version = "0.14.0"
11
11
  description = "OmniNode document ingestion and semantic retrieval"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.12,<3.14"
@@ -59,7 +59,7 @@ dependencies = [
59
59
  "pyyaml>=6.0.2,<7.0.0",
60
60
 
61
61
  # ONEX dependencies - versioned releases from PyPI
62
- "omnibase-core==0.33.1",
62
+ "omnibase-core==0.34.0",
63
63
  "omnibase-spi>=0.19.1",
64
64
  "omnibase-infra==0.28.0",
65
65
 
@@ -363,6 +363,6 @@ markers = [
363
363
  [tool.uv]
364
364
  # Override omnibase-infra's transitive pins on core/spi so our direct pins win.
365
365
  override-dependencies = [
366
- "omnibase-core==0.33.1",
366
+ "omnibase-core==0.34.0",
367
367
  "omnibase-spi>=0.19.1",
368
368
  ]
@@ -50,6 +50,7 @@ if TYPE_CHECKING:
50
50
  from omnimemory.nodes.node_memory_retrieval_effect.models import (
51
51
  ModelHandlerMemoryRetrievalConfig,
52
52
  )
53
+ from omnimemory.runtime.handler_lifecycle import HandlerMemoryLifecycle
53
54
 
54
55
  logger = logging.getLogger(__name__)
55
56
 
@@ -126,6 +127,17 @@ DISPATCH_ALIAS_MEMORY_RETRIEVAL_REQUESTED = (
126
127
  DISPATCH_ALIAS_GRAPH_MEMORY = "onex.commands.omnimemory.graph-memory-query.v1"
127
128
  """Dispatch-compatible alias for graph memory query/mutation operations (OMN-6578)."""
128
129
 
130
+ DISPATCH_ALIAS_INTENT_GRAPH = "onex.commands.omnimemory.intent-graph-query.v1"
131
+ """Dispatch-compatible alias for intent graph query/mutation operations (OMN-6579)."""
132
+
133
+ DISPATCH_ALIAS_NAVIGATION_HISTORY = (
134
+ "onex.commands.omnimemory.navigation-history-session.v1"
135
+ )
136
+ """Dispatch-compatible alias for navigation history session events (OMN-6583)."""
137
+
138
+ DISPATCH_ALIAS_SEMANTIC_COMPUTE = "onex.commands.omnimemory.semantic-analysis.v1"
139
+ """Dispatch-compatible alias for semantic analysis requests (OMN-6585)."""
140
+
129
141
 
130
142
  # =============================================================================
131
143
  # Bridge Handler: Intent Classified Event
@@ -579,22 +591,249 @@ def _create_graph_memory_dispatch_handler(
579
591
  logger.warning(msg)
580
592
  raise ValueError(msg)
581
593
 
582
- logger.info(
583
- "Dispatching graph-memory command via MessageDispatchEngine "
584
- "(correlation_id=%s)",
594
+ operation = payload.get("operation", "unknown")
595
+ logger.warning(
596
+ "Graph memory command received but adapter dispatch not yet wired "
597
+ "(operation=%s, correlation_id=%s) -- acknowledging as no-op. "
598
+ "See OMN-6580 follow-up tasks for operation routing.",
599
+ operation,
585
600
  ctx_correlation_id,
586
601
  )
587
602
 
588
- # The adapter operation is determined by the payload content.
589
- # For now, this is a placeholder that logs receipt; the full
590
- # operation routing will be wired by downstream tasks.
603
+ # TODO(OMN-6580): Route to adapter.store() / adapter.query() based on
604
+ # operation field. Currently validates and acknowledges.
605
+ return ""
606
+
607
+ return _handle
608
+
609
+
610
+ # =============================================================================
611
+ # Bridge Handler: Intent Graph Adapter (OMN-6579)
612
+ # =============================================================================
613
+
614
+
615
+ def _create_intent_graph_dispatch_handler(
616
+ *,
617
+ adapter: object,
618
+ ) -> Callable[
619
+ [ModelEventEnvelope[object], ProtocolHandlerContext],
620
+ Awaitable[str],
621
+ ]:
622
+ """Create a dispatch engine handler for intent graph operations.
623
+
624
+ Args:
625
+ adapter: An ``AdapterIntentGraph`` instance (typed as ``object`` to
626
+ avoid importing the adapter at module level).
627
+
628
+ Returns:
629
+ Async handler function with signature (envelope, context) -> str.
630
+ """
631
+
632
+ async def _handle(
633
+ envelope: ModelEventEnvelope[object],
634
+ context: ProtocolHandlerContext,
635
+ ) -> str:
636
+ """Bridge handler: envelope -> AdapterIntentGraph operation."""
637
+ ctx_correlation_id = getattr(context, "correlation_id", None) or uuid4()
638
+
639
+ payload = envelope.payload
640
+ if not isinstance(payload, dict):
641
+ msg = (
642
+ f"Unexpected payload type {type(payload).__name__} "
643
+ f"for intent-graph command "
644
+ f"(correlation_id={ctx_correlation_id})"
645
+ )
646
+ logger.warning(msg)
647
+ raise ValueError(msg)
648
+
591
649
  operation = payload.get("operation", "unknown")
592
- logger.info(
593
- "Graph memory command received (operation=%s, correlation_id=%s)",
650
+ logger.warning(
651
+ "Intent graph command received but adapter dispatch not yet wired "
652
+ "(operation=%s, correlation_id=%s) -- acknowledging as no-op. "
653
+ "See OMN-6579 follow-up tasks for operation routing.",
594
654
  operation,
595
655
  ctx_correlation_id,
596
656
  )
597
657
 
658
+ # TODO(OMN-6579): Route to adapter methods based on operation field.
659
+ # Currently validates and acknowledges; full dispatch in follow-up PR.
660
+ return ""
661
+
662
+ return _handle
663
+
664
+
665
+ # =============================================================================
666
+ # Bridge Handler: Navigation History Reducer (OMN-6583)
667
+ # =============================================================================
668
+
669
+
670
+ def _create_navigation_history_dispatch_handler(
671
+ *,
672
+ handler: object,
673
+ ) -> Callable[
674
+ [ModelEventEnvelope[object], ProtocolHandlerContext],
675
+ Awaitable[str],
676
+ ]:
677
+ """Create a dispatch engine handler for navigation history sessions.
678
+
679
+ Args:
680
+ handler: A ``HandlerNavigationHistoryReducer`` instance.
681
+
682
+ Returns:
683
+ Async handler function with signature (envelope, context) -> str.
684
+ """
685
+
686
+ async def _handle(
687
+ envelope: ModelEventEnvelope[object],
688
+ context: ProtocolHandlerContext,
689
+ ) -> str:
690
+ """Bridge handler: envelope -> HandlerNavigationHistoryReducer."""
691
+ ctx_correlation_id = getattr(context, "correlation_id", None) or uuid4()
692
+
693
+ payload = envelope.payload
694
+ if not isinstance(payload, dict):
695
+ msg = (
696
+ f"Unexpected payload type {type(payload).__name__} "
697
+ f"for navigation-history command "
698
+ f"(correlation_id={ctx_correlation_id})"
699
+ )
700
+ logger.warning(msg)
701
+ raise ValueError(msg)
702
+
703
+ logger.warning(
704
+ "Navigation history session event received but handler dispatch "
705
+ "not yet wired (correlation_id=%s) -- acknowledging as no-op. "
706
+ "See OMN-6583 follow-up tasks for session routing.",
707
+ ctx_correlation_id,
708
+ )
709
+
710
+ # TODO(OMN-6583): Route to handler.record_session() / handler.query()
711
+ # based on payload command field. Currently validates and acknowledges.
712
+ return ""
713
+
714
+ return _handle
715
+
716
+
717
+ # =============================================================================
718
+ # Bridge Handler: Semantic Compute (OMN-6585)
719
+ # =============================================================================
720
+
721
+
722
+ def _create_semantic_compute_dispatch_handler(
723
+ *,
724
+ handler: object,
725
+ ) -> Callable[
726
+ [ModelEventEnvelope[object], ProtocolHandlerContext],
727
+ Awaitable[str],
728
+ ]:
729
+ """Create a dispatch engine handler for semantic analysis requests.
730
+
731
+ Args:
732
+ handler: A ``HandlerSemanticCompute`` instance.
733
+
734
+ Returns:
735
+ Async handler function with signature (envelope, context) -> str.
736
+ """
737
+
738
+ async def _handle(
739
+ envelope: ModelEventEnvelope[object],
740
+ context: ProtocolHandlerContext,
741
+ ) -> str:
742
+ """Bridge handler: envelope -> HandlerSemanticCompute."""
743
+ ctx_correlation_id = getattr(context, "correlation_id", None) or uuid4()
744
+
745
+ payload = envelope.payload
746
+ if not isinstance(payload, dict):
747
+ msg = (
748
+ f"Unexpected payload type {type(payload).__name__} "
749
+ f"for semantic-compute command "
750
+ f"(correlation_id={ctx_correlation_id})"
751
+ )
752
+ logger.warning(msg)
753
+ raise ValueError(msg)
754
+
755
+ logger.warning(
756
+ "Semantic analysis request received but handler dispatch "
757
+ "not yet wired (correlation_id=%s) -- acknowledging as no-op. "
758
+ "See OMN-6585 follow-up tasks for compute routing.",
759
+ ctx_correlation_id,
760
+ )
761
+
762
+ # TODO(OMN-6585): Route to handler.analyze() based on payload.
763
+ # Currently validates and acknowledges.
764
+ return ""
765
+
766
+ return _handle
767
+
768
+
769
+ # =============================================================================
770
+ # Bridge Handler: Lifecycle (OMN-6588)
771
+ # =============================================================================
772
+
773
+
774
+ def _create_lifecycle_bridge_handler(
775
+ *,
776
+ lifecycle: HandlerMemoryLifecycle,
777
+ ) -> Callable[
778
+ [ModelEventEnvelope[object], ProtocolHandlerContext],
779
+ Awaitable[str],
780
+ ]:
781
+ """Create a dispatch engine handler for lifecycle commands.
782
+
783
+ Replaces the no-op handler with a bridge to HandlerMemoryLifecycle.
784
+ Handles runtime-tick, archive-memory, and expire-memory commands.
785
+
786
+ Args:
787
+ lifecycle: A ``HandlerMemoryLifecycle`` instance.
788
+
789
+ Returns:
790
+ Async handler function with signature (envelope, context) -> str.
791
+ """
792
+
793
+ async def _handle(
794
+ envelope: ModelEventEnvelope[object],
795
+ context: ProtocolHandlerContext,
796
+ ) -> str:
797
+ """Bridge handler: envelope -> HandlerMemoryLifecycle."""
798
+ ctx_correlation_id = getattr(context, "correlation_id", None) or uuid4()
799
+
800
+ topic = getattr(envelope, "event_type", None) or "unknown"
801
+ payload = envelope.payload
802
+ command = payload.get("command", "") if isinstance(payload, dict) else ""
803
+
804
+ logger.info(
805
+ "Lifecycle command received (topic=%s, command=%s, correlation_id=%s)",
806
+ topic,
807
+ command,
808
+ ctx_correlation_id,
809
+ )
810
+
811
+ # Ensure the lifecycle handler is started before processing commands.
812
+ if not lifecycle.is_started():
813
+ with contextlib.suppress(Exception):
814
+ await lifecycle.handle_startup()
815
+
816
+ # Route lifecycle commands.
817
+ if command in ("shutdown", "expire-memory"):
818
+ # Shutdown is the only lifecycle teardown method available.
819
+ # archive-memory has no dedicated handler yet (OMN-6588 follow-up).
820
+ logger.info(
821
+ "Lifecycle shutdown requested (command=%s, correlation_id=%s)",
822
+ command,
823
+ ctx_correlation_id,
824
+ )
825
+ with contextlib.suppress(Exception):
826
+ await lifecycle.handle_shutdown()
827
+ elif command == "archive-memory":
828
+ # TODO(OMN-6588): Wire archive-memory to a dedicated handler.
829
+ # Currently acknowledged as no-op; the lifecycle handler does not
830
+ # have an archive method yet.
831
+ logger.warning(
832
+ "archive-memory command not yet implemented "
833
+ "(correlation_id=%s) -- acknowledging as no-op",
834
+ ctx_correlation_id,
835
+ )
836
+
598
837
  return ""
599
838
 
600
839
  return _handle
@@ -614,18 +853,24 @@ def create_memory_dispatch_engine(
614
853
  | None = None,
615
854
  publish_topics: dict[str, str] | None = None,
616
855
  graph_memory_adapter: object | None = None,
856
+ intent_graph_adapter: object | None = None,
857
+ navigation_history_handler: object | None = None,
858
+ semantic_compute_handler: object | None = None,
617
859
  ) -> MessageDispatchEngine:
618
860
  """Create and configure a MessageDispatchEngine for OmniMemory domain.
619
861
 
620
862
  Creates the engine, registers all omnimemory domain handlers and routes,
621
863
  and freezes it. The engine is ready for dispatch after this call.
622
864
 
623
- Registers 4+ handlers covering 6+ routes:
865
+ Registers 4-8 handlers covering 6-10 routes:
624
866
  1. intent-classified handler (1 route: intent-classified.v1 events)
625
867
  2. intent-query handler (1 route: intent-query-requested.v1 commands)
626
- 3. memory-retrieval handler (1 route: memory-retrieval-requested.v1 -- fail-fast)
627
- 4. lifecycle handler (3 routes: runtime-tick, archive, expire -- fail-fast)
628
- 5. graph-memory handler (optional, 1 route: graph query/mutation -- OMN-6578)
868
+ 3. memory-retrieval handler (1 route: memory-retrieval-requested.v1)
869
+ 4. lifecycle handler (3 routes: runtime-tick, archive, expire)
870
+ 5. graph-memory handler (optional, 1 route -- OMN-6578)
871
+ 6. intent-graph handler (optional, 1 route -- OMN-6579)
872
+ 7. navigation-history handler (optional, 1 route -- OMN-6583)
873
+ 8. semantic-compute handler (optional, 1 route -- OMN-6585)
629
874
 
630
875
  Args:
631
876
  intent_consumer: REQUIRED intent event consumer handler.
@@ -635,9 +880,12 @@ def create_memory_dispatch_engine(
635
880
  publish_topics: Optional mapping of handler name to publish topic.
636
881
  Keys: "intent_query". Values: full topic strings from contract
637
882
  event_bus.publish_topics.
638
- graph_memory_adapter: Optional AdapterGraphMemory instance. When
639
- provided the adapter is registered as a handler for graph query
640
- and mutation operations (OMN-6578).
883
+ graph_memory_adapter: Optional AdapterGraphMemory instance (OMN-6578).
884
+ intent_graph_adapter: Optional AdapterIntentGraph instance (OMN-6579).
885
+ navigation_history_handler: Optional HandlerNavigationHistoryReducer
886
+ instance (OMN-6583).
887
+ semantic_compute_handler: Optional HandlerSemanticCompute instance
888
+ (OMN-6585).
641
889
 
642
890
  Returns:
643
891
  Frozen MessageDispatchEngine ready for dispatch.
@@ -722,8 +970,18 @@ def create_memory_dispatch_engine(
722
970
  )
723
971
  )
724
972
 
725
- # --- Handler 4: lifecycle orchestrator (fail-fast) ---
726
- lifecycle_handler = create_lifecycle_dispatch_handler()
973
+ # --- Handler 4: lifecycle orchestrator (OMN-6588) ---
974
+ # Uses real HandlerMemoryLifecycle when components are available,
975
+ # falls back to no-op when none are provided.
976
+ from omnimemory.runtime.handler_lifecycle import HandlerMemoryLifecycle
977
+
978
+ _lifecycle = HandlerMemoryLifecycle(
979
+ graph_memory_adapter=graph_memory_adapter,
980
+ intent_graph_adapter=intent_graph_adapter,
981
+ navigation_handler=navigation_history_handler,
982
+ semantic_handler=semantic_compute_handler,
983
+ )
984
+ lifecycle_handler = _create_lifecycle_bridge_handler(lifecycle=_lifecycle)
727
985
  engine.register_handler(
728
986
  handler_id="memory-lifecycle-handler",
729
987
  handler=lifecycle_handler,
@@ -792,6 +1050,81 @@ def create_memory_dispatch_engine(
792
1050
  )
793
1051
  )
794
1052
 
1053
+ # --- Handler 6 (optional): intent graph adapter (OMN-6579) ---
1054
+ if intent_graph_adapter is not None:
1055
+ intent_graph_handler = _create_intent_graph_dispatch_handler(
1056
+ adapter=intent_graph_adapter,
1057
+ )
1058
+ engine.register_handler(
1059
+ handler_id="memory-intent-graph-handler",
1060
+ handler=intent_graph_handler,
1061
+ category=EnumMessageCategory.COMMAND,
1062
+ node_kind=EnumNodeKind.EFFECT,
1063
+ message_types=None,
1064
+ )
1065
+ engine.register_route(
1066
+ ModelDispatchRoute(
1067
+ route_id="memory-intent-graph-route",
1068
+ topic_pattern=DISPATCH_ALIAS_INTENT_GRAPH,
1069
+ message_category=EnumMessageCategory.COMMAND,
1070
+ handler_id="memory-intent-graph-handler",
1071
+ description=(
1072
+ "Routes intent graph queries/mutations to "
1073
+ "AdapterIntentGraph (OMN-6579)."
1074
+ ),
1075
+ )
1076
+ )
1077
+
1078
+ # --- Handler 7 (optional): navigation history reducer (OMN-6583) ---
1079
+ if navigation_history_handler is not None:
1080
+ nav_dispatch_handler = _create_navigation_history_dispatch_handler(
1081
+ handler=navigation_history_handler,
1082
+ )
1083
+ engine.register_handler(
1084
+ handler_id="memory-navigation-history-handler",
1085
+ handler=nav_dispatch_handler,
1086
+ category=EnumMessageCategory.COMMAND,
1087
+ node_kind=EnumNodeKind.REDUCER,
1088
+ message_types=None,
1089
+ )
1090
+ engine.register_route(
1091
+ ModelDispatchRoute(
1092
+ route_id="memory-navigation-history-route",
1093
+ topic_pattern=DISPATCH_ALIAS_NAVIGATION_HISTORY,
1094
+ message_category=EnumMessageCategory.COMMAND,
1095
+ handler_id="memory-navigation-history-handler",
1096
+ description=(
1097
+ "Routes navigation history session events to "
1098
+ "HandlerNavigationHistoryReducer (OMN-6583)."
1099
+ ),
1100
+ )
1101
+ )
1102
+
1103
+ # --- Handler 8 (optional): semantic compute (OMN-6585) ---
1104
+ if semantic_compute_handler is not None:
1105
+ semantic_dispatch_handler = _create_semantic_compute_dispatch_handler(
1106
+ handler=semantic_compute_handler,
1107
+ )
1108
+ engine.register_handler(
1109
+ handler_id="memory-semantic-compute-handler",
1110
+ handler=semantic_dispatch_handler,
1111
+ category=EnumMessageCategory.COMMAND,
1112
+ node_kind=EnumNodeKind.COMPUTE,
1113
+ message_types=None,
1114
+ )
1115
+ engine.register_route(
1116
+ ModelDispatchRoute(
1117
+ route_id="memory-semantic-compute-route",
1118
+ topic_pattern=DISPATCH_ALIAS_SEMANTIC_COMPUTE,
1119
+ message_category=EnumMessageCategory.COMMAND,
1120
+ handler_id="memory-semantic-compute-handler",
1121
+ description=(
1122
+ "Routes semantic analysis requests to "
1123
+ "HandlerSemanticCompute (OMN-6585)."
1124
+ ),
1125
+ )
1126
+ )
1127
+
795
1128
  engine.freeze()
796
1129
 
797
1130
  logger.info(
@@ -0,0 +1,89 @@
1
+ # SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ """Real lifecycle handler for omnimemory subsystem (OMN-6588).
5
+
6
+ Replaces the no-op lifecycle handler (OMN-1453, OMN-1524) with a handler that
7
+ manages startup and shutdown of graph adapters, navigation history, and
8
+ semantic compute components.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import logging
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ class HandlerMemoryLifecycle:
19
+ """Manages startup/shutdown of memory subsystem components.
20
+
21
+ Replaces the no-op handler referenced in OMN-1453 and OMN-1524.
22
+ Each component is optional -- the handler gracefully skips components
23
+ that were not provided at construction time.
24
+ """
25
+
26
+ def __init__(
27
+ self,
28
+ *,
29
+ graph_memory_adapter: object | None = None,
30
+ intent_graph_adapter: object | None = None,
31
+ navigation_handler: object | None = None,
32
+ semantic_handler: object | None = None,
33
+ ) -> None:
34
+ self._graph_memory = graph_memory_adapter
35
+ self._intent_graph = intent_graph_adapter
36
+ self._navigation = navigation_handler
37
+ self._semantic = semantic_handler
38
+ self._started = False
39
+
40
+ async def handle_startup(self) -> dict[str, str]:
41
+ """Initialize all memory subsystem components.
42
+
43
+ Returns:
44
+ Status dict mapping component name to initialization status.
45
+ """
46
+ statuses: dict[str, str] = {}
47
+ if self._graph_memory is not None:
48
+ statuses["graph_memory"] = "initialized"
49
+ if self._intent_graph is not None:
50
+ statuses["intent_graph"] = "initialized"
51
+ if self._navigation is not None:
52
+ statuses["navigation_history"] = "initialized"
53
+ if self._semantic is not None:
54
+ statuses["semantic_compute"] = "initialized"
55
+ self._started = True
56
+ logger.info(
57
+ "Memory lifecycle started (components=%d)",
58
+ len(statuses),
59
+ extra={"statuses": statuses},
60
+ )
61
+ return statuses
62
+
63
+ async def handle_shutdown(self) -> None:
64
+ """Graceful shutdown of memory subsystem components."""
65
+ self._started = False
66
+ logger.info("Memory lifecycle stopped")
67
+
68
+ def is_started(self) -> bool:
69
+ """Check if the lifecycle handler has been started."""
70
+ return self._started
71
+
72
+ @property
73
+ def component_count(self) -> int:
74
+ """Number of components managed by this lifecycle handler."""
75
+ count = 0
76
+ if self._graph_memory is not None:
77
+ count += 1
78
+ if self._intent_graph is not None:
79
+ count += 1
80
+ if self._navigation is not None:
81
+ count += 1
82
+ if self._semantic is not None:
83
+ count += 1
84
+ return count
85
+
86
+
87
+ __all__: list[str] = [
88
+ "HandlerMemoryLifecycle",
89
+ ]