omninode-memory 0.12.0__tar.gz → 0.12.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/release.yml +15 -5
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/CHANGELOG.md +21 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/PKG-INFO +3 -3
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/pyproject.toml +4 -4
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/events/model_intent_classified_event.py +1 -1
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_migration_progress.py +1 -2
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/concurrency.py +4 -4
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/pii_detector.py +4 -4
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/resource_manager.py +15 -9
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/conftest.py +1 -1
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +51 -17
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_contract_validation.py +11 -11
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_node_enforcement.py +3 -3
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_node_imports.py +4 -4
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_validation_scripts.py +6 -2
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/uv.lock +10 -10
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.claude/architecture-handshake.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.env.example +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.flake8 +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/dependabot.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/required-checks.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/auto-tag-on-merge.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/build-and-push-migrate-image.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/check-handshake.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/ci.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/contract-validation.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/omni-standards-compliance.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/pre-commit.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/release-dry-run.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/security-scan.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/stale-todo-gate.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.github/workflows/todo-audit-on-merge.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.gitignore +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.markdown-link-check.json +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.pre-commit-config.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.secrets.baseline +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.serena/memories/project_overview.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.serena/memories/suggested_commands.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.serena/project.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/.yamlfmt +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/AGENT.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/CLAUDE.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/CODE_OF_CONDUCT.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/CONTRIBUTING.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/LICENSE +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/README.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/SECURITY.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations/002_create_memories_table.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/deployment/docker/Dockerfile.migrate +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docker-compose.prod.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docker-compose.yml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/INDEX.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/PERFORMANCE_TESTING.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/architecture/ARCH_002_KAFKA_ABSTRACTION.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/architecture/ONEX_FOUR_NODE_ARCHITECTURE.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/ci/CI_MONITORING_GUIDE.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/db-split/fk-audit-omn-2069.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/environment_variables.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/handler_reuse_matrix.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/pii_handling.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/runtime/RUNTIME_PLUGINS.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/docs/stub_protocols.md +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/examples/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/examples/advanced_architecture_demo.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/pyrightconfig.json +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/check_migration_freeze.sh +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/check_no_hardcoded_bolt.sh +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validate_ci_precommit_alignment.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validate_no_transport_imports.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/check_ai_slop.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_enum_casing.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_http_imports.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_kafka_imports.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_model_locations.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_naming.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_no_backward_compatibility.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_pydantic_patterns.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_secrets.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_single_class_per_file.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/scripts/validation/validate_spdx_headers.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/_compat_imports.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/audit/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/audit/__main__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/audit/io_audit.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/bootstrap.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/crawl/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_context_item_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_data_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_error_code.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_migration_status.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_node_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_operation_status.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_priority_level.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_severity.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_subscription_status.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/enums/enum_trust_level.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/errors/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/errors/embedding_errors.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/handler_intent.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/handler_subscription.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_embedding_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_postgres_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/container/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/contracts/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_memory_context.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_memory_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_memory_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/core/model_provenance.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_crawl_state_record.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/crawl/types.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/events/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_configuration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_error_details.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_health_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_notes.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_priority.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_semver.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_system_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_tags.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/foundation/model_user.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/intelligence/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/memory/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/memory/model_memory_item.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/memory/model_memory_query.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/scoring/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/service/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/service/model_service_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/service/model_service_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/service/model_service_registry.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/subscription/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/subscription/constants.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/subscription/model_subscription.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_audit.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_concurrency.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_health_status.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_pii_match.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_pii_type.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_retry_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/models/utils/model_system_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/base.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_filesystem_crawler_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_filesystem_crawler_effect/handler_filesystem_crawler.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/model_filesystem_crawl_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_filesystem_crawler_effect/models/model_filesystem_crawler_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/handler_intent_event_consumer.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/model_consumer_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/models/model_consumer_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_event_consumer_effect/utils/util_event_mapper.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/utils/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_query_effect/utils/util_intent_mapping.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/clients/client_kreuzberg.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/clients/embedding_client.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/nodes/node_statistics_reducer/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/base_protocols.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/data_models.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/error_models.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/protocol_crawl_state_repository.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/protocol_embedding.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/adapters.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/contract_topics.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/dispatch_handlers.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/introspection.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/message_type_registration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/plugin.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/runtime/wiring.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/secrets.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/settings.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/tools/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/tools/contract_linter.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/tools/stubs/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/tools/stubs/contract_validator.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/audit_logger.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/db_url.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/error_sanitizer.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/handler_constants.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/health_manager.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/observability.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/src/omnimemory/utils/retry_utils.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/audit/io_audit_whitelist.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/audit/transport_import_whitelist.yaml +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/test_handler_intent.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/handlers/test_handler_semantic_compute.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/conftest.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/nodes/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/test_entry_point_discovery.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/test_handler_subscription.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/integration/test_node_agent_coordinator.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/models/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/models/contracts/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/models/contracts/test_extended_contracts.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/models/events/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/models/events/test_model_intent_classified_event.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/models/test_frozen_boundary_models.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_filesystem_crawler_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_filesystem_crawler_effect/test_handler_filesystem_crawler.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_event_consumer_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_event_consumer_effect/test_handler_intent_event_consumer.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_event_consumer_effect/test_model_consumer_health.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_event_consumer_effect/test_util_event_mapper.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_bootstrap.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_concurrency.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_config_models.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_contract_version.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_db_url.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_foundation.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_health_manager.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_migration_progress.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_observability_metrics.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_performance.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_resource_manager.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_secrets_provider.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/test_settings.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/handlers/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/handlers/test_subscription_typing.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_handler_qdrant.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/__init__.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/conftest.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_adapters.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_contract_topics.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_dispatch_handlers.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_introspection.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_message_type_registration.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_plugin.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/runtime/test_wiring.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_contract_linter.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_dispatch_retrieval_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_entry_points.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_ingestion_models.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_io_audit.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_scope_mapping_config.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_sql_placeholders.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_validate_ci_precommit_alignment.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_validate_kafka_imports.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/tests/unit/test_validate_no_transport_imports.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/validate_architecture_improvements.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/validate_foundation.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/validate_foundation_isolated.py +0 -0
- {omninode_memory-0.12.0 → omninode_memory-0.12.2}/validate_foundation_minimal.py +0 -0
|
@@ -4,7 +4,9 @@ name: Release
|
|
|
4
4
|
|
|
5
5
|
on:
|
|
6
6
|
push:
|
|
7
|
-
tags:
|
|
7
|
+
tags:
|
|
8
|
+
- 'v[0-9]*.[0-9]*.[0-9]*'
|
|
9
|
+
- 'omnimemory/v[0-9]*.[0-9]*.[0-9]*'
|
|
8
10
|
workflow_dispatch:
|
|
9
11
|
inputs:
|
|
10
12
|
tag:
|
|
@@ -42,6 +44,8 @@ jobs:
|
|
|
42
44
|
else
|
|
43
45
|
TAG="${GITHUB_REF_NAME}"
|
|
44
46
|
fi
|
|
47
|
+
# Strip optional namespace prefix (e.g. omnimemory/v0.12.0 → v0.12.0)
|
|
48
|
+
TAG="${TAG#omnimemory/}"
|
|
45
49
|
TAG="${TAG#v}"
|
|
46
50
|
PKG_VERSION=$(python3 -c "
|
|
47
51
|
import tomllib, sys
|
|
@@ -86,21 +90,27 @@ jobs:
|
|
|
86
90
|
id: tag
|
|
87
91
|
run: |
|
|
88
92
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
89
|
-
|
|
93
|
+
RAW_TAG="${{ inputs.tag }}"
|
|
90
94
|
else
|
|
91
|
-
|
|
95
|
+
RAW_TAG="${GITHUB_REF_NAME}"
|
|
92
96
|
fi
|
|
97
|
+
# Preserve original tag for release creation (softprops/action-gh-release
|
|
98
|
+
# requires the tag to already exist in git)
|
|
99
|
+
echo "raw_tag=${RAW_TAG}" >> $GITHUB_OUTPUT
|
|
100
|
+
# Strip optional namespace prefix for version logic (e.g. omnimemory/v0.12.0 → v0.12.0)
|
|
101
|
+
NORMALIZED="${RAW_TAG#omnimemory/}"
|
|
102
|
+
echo "tag=${NORMALIZED}" >> $GITHUB_OUTPUT
|
|
93
103
|
|
|
94
104
|
- name: Create GitHub Release
|
|
95
105
|
uses: softprops/action-gh-release@v2
|
|
96
106
|
with:
|
|
97
|
-
tag_name: ${{ steps.tag.outputs.
|
|
107
|
+
tag_name: ${{ steps.tag.outputs.raw_tag }}
|
|
98
108
|
files: |
|
|
99
109
|
dist/*.whl
|
|
100
110
|
dist/*.tar.gz
|
|
101
111
|
dist/SHA256SUMS.txt
|
|
102
112
|
generate_release_notes: true
|
|
103
|
-
prerelease: ${{ contains(
|
|
113
|
+
prerelease: ${{ contains(steps.tag.outputs.tag, 'rc') }}
|
|
104
114
|
|
|
105
115
|
# ---------------------------------------------------------------------------
|
|
106
116
|
# Post-release: trigger Dockerfile.runtime pin cascade (OMN-5137)
|
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## v0.12.2 (2026-03-27)
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- fix(types): narrow Any to object in resource/connection pool models [OMN-6680] (#209)
|
|
5
|
+
- fix: handle namespaced tag format in release workflow [OMN-6712] (#208)
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- chore(deps): bump omnibase_core to 0.33.1, omnibase_infra to 0.28.0
|
|
9
|
+
|
|
10
|
+
## v0.12.1 (2026-03-26)
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- fix(tests): standardize skip reason messages across test suite [OMN-6686] (#203)
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- chore: standardize TODO markers with ticket references [OMN-6655] (#204)
|
|
17
|
+
|
|
18
|
+
### Dependencies
|
|
19
|
+
- omnibase-core 0.32.0 -> 0.33.0
|
|
20
|
+
- omnibase-infra 0.27.0 -> 0.27.1
|
|
21
|
+
|
|
1
22
|
## v0.12.0 (2026-03-25)
|
|
2
23
|
|
|
3
24
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omninode-memory
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.2
|
|
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,8 +20,8 @@ Requires-Dist: cachetools<8.0.0,>=6.2.4
|
|
|
20
20
|
Requires-Dist: fastapi<1.0.0,>=0.120.1
|
|
21
21
|
Requires-Dist: httpx<1.0.0,>=0.28.0
|
|
22
22
|
Requires-Dist: mcp<2.0.0,>=1.8.0
|
|
23
|
-
Requires-Dist: omnibase-core==0.
|
|
24
|
-
Requires-Dist: omnibase-infra==0.
|
|
23
|
+
Requires-Dist: omnibase-core==0.33.1
|
|
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
|
|
27
27
|
Requires-Dist: psutil<8.0.0,>=7.0.0
|
|
@@ -7,7 +7,7 @@ build-backend = "hatchling.build"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "omninode-memory"
|
|
10
|
-
version = "0.12.
|
|
10
|
+
version = "0.12.2"
|
|
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.
|
|
62
|
+
"omnibase-core==0.33.1",
|
|
63
63
|
"omnibase-spi>=0.19.1",
|
|
64
|
-
"omnibase-infra==0.
|
|
64
|
+
"omnibase-infra==0.28.0",
|
|
65
65
|
|
|
66
66
|
# Logging and monitoring
|
|
67
67
|
# Version ^23.3.0 required for compatibility with omnibase-infra (requires ^23.2.0)
|
|
@@ -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.
|
|
366
|
+
"omnibase-core==0.33.1",
|
|
367
367
|
"omnibase-spi>=0.19.1",
|
|
368
368
|
]
|
|
@@ -85,7 +85,7 @@ class ModelIntentClassifiedEvent(BaseModel):
|
|
|
85
85
|
Note: Uses ``extra="ignore"`` to allow forward compatibility — if
|
|
86
86
|
omniintelligence adds new fields, this consumer won't reject them.
|
|
87
87
|
|
|
88
|
-
TODO(OMN-
|
|
88
|
+
TODO(OMN-6655): Consider migrating to omnibase_core.models.events
|
|
89
89
|
once cross-repo event schemas are standardized. This is logically
|
|
90
90
|
an omniintelligence-owned event; omnimemory is a consumer.
|
|
91
91
|
"""
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
from datetime import datetime, timedelta, timezone
|
|
15
|
-
from typing import Any
|
|
16
15
|
from uuid import UUID, uuid4
|
|
17
16
|
|
|
18
17
|
from pydantic import BaseModel, ConfigDict, Field, PrivateAttr, computed_field
|
|
@@ -285,7 +284,7 @@ class MigrationProgressTracker(BaseModel):
|
|
|
285
284
|
)
|
|
286
285
|
|
|
287
286
|
def add_file(
|
|
288
|
-
self, file_path: str, file_size: int | None = None, **metadata:
|
|
287
|
+
self, file_path: str, file_size: int | None = None, **metadata: object
|
|
289
288
|
) -> FileProcessingInfo:
|
|
290
289
|
"""Add a file to be tracked for processing."""
|
|
291
290
|
from .model_typed_collections import ModelKeyValuePair
|
|
@@ -658,7 +658,7 @@ class AsyncConnectionPool:
|
|
|
658
658
|
error=_sanitize_error(cleanup_error),
|
|
659
659
|
)
|
|
660
660
|
|
|
661
|
-
async def _create_new_connection(self) ->
|
|
661
|
+
async def _create_new_connection(self) -> object:
|
|
662
662
|
"""Create a new connection."""
|
|
663
663
|
try:
|
|
664
664
|
connection = await self._create_connection()
|
|
@@ -673,7 +673,7 @@ class AsyncConnectionPool:
|
|
|
673
673
|
)
|
|
674
674
|
raise
|
|
675
675
|
|
|
676
|
-
async def _return_connection(self, connection_id: str, connection:
|
|
676
|
+
async def _return_connection(self, connection_id: str, connection: object) -> None:
|
|
677
677
|
"""Return a connection to the pool."""
|
|
678
678
|
try:
|
|
679
679
|
async with self._lock:
|
|
@@ -709,7 +709,7 @@ class AsyncConnectionPool:
|
|
|
709
709
|
except Exception:
|
|
710
710
|
pass # Ignore cleanup errors
|
|
711
711
|
|
|
712
|
-
async def _destroy_connection(self, connection:
|
|
712
|
+
async def _destroy_connection(self, connection: object) -> None:
|
|
713
713
|
"""Destroy a connection."""
|
|
714
714
|
try:
|
|
715
715
|
if asyncio.iscoroutinefunction(self._close_connection):
|
|
@@ -1191,7 +1191,7 @@ class ConnectionPool:
|
|
|
1191
1191
|
with self._sync_lock:
|
|
1192
1192
|
return len(self._active) + len(self._connections)
|
|
1193
1193
|
|
|
1194
|
-
def _create_connection(self) ->
|
|
1194
|
+
def _create_connection(self) -> object:
|
|
1195
1195
|
"""
|
|
1196
1196
|
Create a new connection.
|
|
1197
1197
|
|
|
@@ -89,9 +89,9 @@ class PIIDetector:
|
|
|
89
89
|
"""Initialize regex patterns for different PII types using configuration.
|
|
90
90
|
|
|
91
91
|
Note: The following PIIType values do NOT have patterns implemented:
|
|
92
|
-
- PIIType.URL: TODO - Add URL validation patterns
|
|
93
|
-
- PIIType.PERSON_NAME: TODO - Add dictionary-based name matching
|
|
94
|
-
- PIIType.ADDRESS: TODO - Add address pattern detection
|
|
92
|
+
- PIIType.URL: TODO(OMN-5762) - Add URL validation patterns
|
|
93
|
+
- PIIType.PERSON_NAME: TODO(OMN-5762) - Add dictionary-based name matching
|
|
94
|
+
- PIIType.ADDRESS: TODO(OMN-5762) - Add address pattern detection
|
|
95
95
|
|
|
96
96
|
These types are defined in PIIType for future extensibility but will
|
|
97
97
|
not match any content until patterns are added.
|
|
@@ -203,7 +203,7 @@ class PIIDetector:
|
|
|
203
203
|
) -> set[str]:
|
|
204
204
|
"""Load common first and last names for person name detection.
|
|
205
205
|
|
|
206
|
-
TODO: This name database is loaded but not actively used for detection.
|
|
206
|
+
TODO(OMN-5762): This name database is loaded but not actively used for detection.
|
|
207
207
|
To enable PERSON_NAME detection:
|
|
208
208
|
1. Add PIIType.PERSON_NAME patterns to _initialize_patterns()
|
|
209
209
|
2. Or implement context-aware NLP-based name detection
|
|
@@ -112,7 +112,12 @@ class AsyncCircuitBreaker:
|
|
|
112
112
|
self.stats = CircuitBreakerStats()
|
|
113
113
|
self._lock = asyncio.Lock()
|
|
114
114
|
|
|
115
|
-
async def call(
|
|
115
|
+
async def call(
|
|
116
|
+
self,
|
|
117
|
+
func: Callable[..., Any],
|
|
118
|
+
*args: Any,
|
|
119
|
+
**kwargs: Any,
|
|
120
|
+
) -> Any:
|
|
116
121
|
"""Execute a function call through the circuit breaker."""
|
|
117
122
|
async with self._lock:
|
|
118
123
|
if self.state == CircuitState.OPEN:
|
|
@@ -437,13 +442,13 @@ class ResourceHandle:
|
|
|
437
442
|
Provides resource lifecycle management and context tracking.
|
|
438
443
|
"""
|
|
439
444
|
|
|
440
|
-
resource_id:
|
|
441
|
-
resource:
|
|
445
|
+
resource_id: object
|
|
446
|
+
resource: object
|
|
442
447
|
resource_type: ResourceType
|
|
443
448
|
status: ResourceStatus = ResourceStatus.ACTIVE
|
|
444
449
|
created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
|
|
445
450
|
ttl: float | None = None
|
|
446
|
-
_context: dict[str,
|
|
451
|
+
_context: dict[str, object] = field(default_factory=dict)
|
|
447
452
|
|
|
448
453
|
def is_healthy(self) -> bool:
|
|
449
454
|
"""
|
|
@@ -474,7 +479,7 @@ class ResourceHandle:
|
|
|
474
479
|
elapsed = (datetime.now(timezone.utc) - self.created_at).total_seconds()
|
|
475
480
|
return elapsed >= self.ttl
|
|
476
481
|
|
|
477
|
-
def set_context(self, key: str, value:
|
|
482
|
+
def set_context(self, key: str, value: object) -> None:
|
|
478
483
|
"""
|
|
479
484
|
Set context data on the handle.
|
|
480
485
|
|
|
@@ -484,7 +489,7 @@ class ResourceHandle:
|
|
|
484
489
|
"""
|
|
485
490
|
self._context[key] = value
|
|
486
491
|
|
|
487
|
-
def get_context(self, key: str) ->
|
|
492
|
+
def get_context(self, key: str) -> object | None:
|
|
488
493
|
"""
|
|
489
494
|
Get context data from the handle.
|
|
490
495
|
|
|
@@ -548,11 +553,12 @@ class ResourcePool:
|
|
|
548
553
|
if self.available_resources:
|
|
549
554
|
self._available_event.set()
|
|
550
555
|
|
|
551
|
-
def _create_resource(self) ->
|
|
556
|
+
def _create_resource(self) -> object | None:
|
|
552
557
|
"""Create a new resource."""
|
|
553
558
|
if self._factory:
|
|
554
559
|
try:
|
|
555
|
-
|
|
560
|
+
result: object = self._factory()
|
|
561
|
+
return result
|
|
556
562
|
except Exception as e:
|
|
557
563
|
logger.error(
|
|
558
564
|
"resource_creation_failed",
|
|
@@ -828,7 +834,7 @@ class ResourceManager:
|
|
|
828
834
|
"total_releases": self._metrics["total_releases"],
|
|
829
835
|
}
|
|
830
836
|
|
|
831
|
-
async def _close_resource(self, resource:
|
|
837
|
+
async def _close_resource(self, resource: object) -> None:
|
|
832
838
|
"""
|
|
833
839
|
Close a resource if it has a close method.
|
|
834
840
|
|
|
@@ -193,7 +193,7 @@ def contract_data(request: pytest.FixtureRequest, nodes_dir: Path) -> MappingRes
|
|
|
193
193
|
contract_path: Path = nodes_dir / node_name / "contract.yaml"
|
|
194
194
|
|
|
195
195
|
if not contract_path.exists():
|
|
196
|
-
pytest.skip(f"Contract file
|
|
196
|
+
pytest.skip(f"Contract file pending implementation: {contract_path}")
|
|
197
197
|
|
|
198
198
|
with open(contract_path) as f:
|
|
199
199
|
data = yaml.safe_load(f)
|
|
@@ -89,7 +89,9 @@ class TestSkipLockedConcurrency:
|
|
|
89
89
|
- Multiple concurrent database connections
|
|
90
90
|
"""
|
|
91
91
|
|
|
92
|
-
@pytest.mark.skip(
|
|
92
|
+
@pytest.mark.skip(
|
|
93
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
94
|
+
)
|
|
93
95
|
async def test_skip_locked_prevents_double_processing(self) -> None:
|
|
94
96
|
"""Verify FOR UPDATE SKIP LOCKED prevents concurrent handlers
|
|
95
97
|
from processing same memory.
|
|
@@ -114,7 +116,9 @@ class TestSkipLockedConcurrency:
|
|
|
114
116
|
handlers reach the query point before either commits.
|
|
115
117
|
"""
|
|
116
118
|
|
|
117
|
-
@pytest.mark.skip(
|
|
119
|
+
@pytest.mark.skip(
|
|
120
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
121
|
+
)
|
|
118
122
|
async def test_skip_locked_allows_different_memory_processing(self) -> None:
|
|
119
123
|
"""Verify concurrent handlers can process different memories.
|
|
120
124
|
|
|
@@ -135,7 +139,9 @@ class TestSkipLockedConcurrency:
|
|
|
135
139
|
workloads while preventing double-processing of individual entities.
|
|
136
140
|
"""
|
|
137
141
|
|
|
138
|
-
@pytest.mark.skip(
|
|
142
|
+
@pytest.mark.skip(
|
|
143
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
144
|
+
)
|
|
139
145
|
async def test_skip_locked_batch_processing_isolation(self) -> None:
|
|
140
146
|
"""Verify batch processing with SKIP LOCKED isolates work correctly.
|
|
141
147
|
|
|
@@ -181,7 +187,9 @@ class TestOptimisticLocking:
|
|
|
181
187
|
- Row count validation after UPDATE
|
|
182
188
|
"""
|
|
183
189
|
|
|
184
|
-
@pytest.mark.skip(
|
|
190
|
+
@pytest.mark.skip(
|
|
191
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
192
|
+
)
|
|
185
193
|
async def test_optimistic_lock_conflict_detected(self) -> None:
|
|
186
194
|
"""Verify revision mismatch is detected and handled.
|
|
187
195
|
|
|
@@ -204,7 +212,9 @@ class TestOptimisticLocking:
|
|
|
204
212
|
When rows_affected=0, handler must recognize this as conflict.
|
|
205
213
|
"""
|
|
206
214
|
|
|
207
|
-
@pytest.mark.skip(
|
|
215
|
+
@pytest.mark.skip(
|
|
216
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
217
|
+
)
|
|
208
218
|
async def test_optimistic_lock_revision_increment(self) -> None:
|
|
209
219
|
"""Verify lifecycle_revision increments on each state change.
|
|
210
220
|
|
|
@@ -223,7 +233,9 @@ class TestOptimisticLocking:
|
|
|
223
233
|
correctly across the full lifecycle state machine.
|
|
224
234
|
"""
|
|
225
235
|
|
|
226
|
-
@pytest.mark.skip(
|
|
236
|
+
@pytest.mark.skip(
|
|
237
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
238
|
+
)
|
|
227
239
|
async def test_optimistic_lock_conflict_recovery(self) -> None:
|
|
228
240
|
"""Verify handler gracefully recovers from optimistic lock conflict.
|
|
229
241
|
|
|
@@ -270,7 +282,9 @@ class TestArchiveAtomicity:
|
|
|
270
282
|
- Temp file + rename pattern for atomicity
|
|
271
283
|
"""
|
|
272
284
|
|
|
273
|
-
@pytest.mark.skip(
|
|
285
|
+
@pytest.mark.skip(
|
|
286
|
+
reason="Blocked: write_atomic_bytes() not yet available (OMN-1524)"
|
|
287
|
+
)
|
|
274
288
|
async def test_archive_atomic_write_crash_safety(self) -> None:
|
|
275
289
|
"""Verify archive write is atomic (no partial files).
|
|
276
290
|
|
|
@@ -295,7 +309,9 @@ class TestArchiveAtomicity:
|
|
|
295
309
|
On failure at any step, .tmp file is deleted.
|
|
296
310
|
"""
|
|
297
311
|
|
|
298
|
-
@pytest.mark.skip(
|
|
312
|
+
@pytest.mark.skip(
|
|
313
|
+
reason="Blocked: write_atomic_bytes() not yet available (OMN-1524)"
|
|
314
|
+
)
|
|
299
315
|
async def test_archive_database_filesystem_consistency(self) -> None:
|
|
300
316
|
"""Verify database and filesystem stay consistent on archive.
|
|
301
317
|
|
|
@@ -319,7 +335,9 @@ class TestArchiveAtomicity:
|
|
|
319
335
|
fails, delete the archive file.
|
|
320
336
|
"""
|
|
321
337
|
|
|
322
|
-
@pytest.mark.skip(
|
|
338
|
+
@pytest.mark.skip(
|
|
339
|
+
reason="Blocked: write_atomic_bytes() not yet available (OMN-1524)"
|
|
340
|
+
)
|
|
323
341
|
async def test_archive_rollback_on_db_failure(self) -> None:
|
|
324
342
|
"""Verify archive file deleted if database update fails.
|
|
325
343
|
|
|
@@ -363,7 +381,9 @@ class TestTickIdempotency:
|
|
|
363
381
|
- Idempotency checks in projection queries
|
|
364
382
|
"""
|
|
365
383
|
|
|
366
|
-
@pytest.mark.skip(
|
|
384
|
+
@pytest.mark.skip(
|
|
385
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
386
|
+
)
|
|
367
387
|
async def test_tick_reprocessing_idempotent(self) -> None:
|
|
368
388
|
"""Verify processing same tick twice produces same result.
|
|
369
389
|
|
|
@@ -385,7 +405,9 @@ class TestTickIdempotency:
|
|
|
385
405
|
This ensures already-emitted transitions are not re-emitted.
|
|
386
406
|
"""
|
|
387
407
|
|
|
388
|
-
@pytest.mark.skip(
|
|
408
|
+
@pytest.mark.skip(
|
|
409
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
410
|
+
)
|
|
389
411
|
async def test_emission_marker_atomicity(self) -> None:
|
|
390
412
|
"""Verify emission marker set atomically with event emission.
|
|
391
413
|
|
|
@@ -428,7 +450,9 @@ class TestProjectionQueryIsolation:
|
|
|
428
450
|
- Consistent snapshot within transaction
|
|
429
451
|
"""
|
|
430
452
|
|
|
431
|
-
@pytest.mark.skip(
|
|
453
|
+
@pytest.mark.skip(
|
|
454
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
455
|
+
)
|
|
432
456
|
async def test_projection_query_snapshot_consistency(self) -> None:
|
|
433
457
|
"""Verify projection query returns consistent snapshot.
|
|
434
458
|
|
|
@@ -448,7 +472,9 @@ class TestProjectionQueryIsolation:
|
|
|
448
472
|
For stricter isolation, can use REPEATABLE READ.
|
|
449
473
|
"""
|
|
450
474
|
|
|
451
|
-
@pytest.mark.skip(
|
|
475
|
+
@pytest.mark.skip(
|
|
476
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
477
|
+
)
|
|
452
478
|
async def test_projection_query_deadline_evaluation(self) -> None:
|
|
453
479
|
"""Verify projection query uses injected 'now' for deadline.
|
|
454
480
|
|
|
@@ -485,7 +511,9 @@ class TestTransactionBoundaries:
|
|
|
485
511
|
- Rollback on any failure
|
|
486
512
|
"""
|
|
487
513
|
|
|
488
|
-
@pytest.mark.skip(
|
|
514
|
+
@pytest.mark.skip(
|
|
515
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
516
|
+
)
|
|
489
517
|
async def test_tick_processing_single_transaction(self) -> None:
|
|
490
518
|
"""Verify tick processing uses single transaction.
|
|
491
519
|
|
|
@@ -505,7 +533,9 @@ class TestTransactionBoundaries:
|
|
|
505
533
|
All database operations within handler are in same transaction.
|
|
506
534
|
"""
|
|
507
535
|
|
|
508
|
-
@pytest.mark.skip(
|
|
536
|
+
@pytest.mark.skip(
|
|
537
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
538
|
+
)
|
|
509
539
|
async def test_transaction_rollback_on_exception(self) -> None:
|
|
510
540
|
"""Verify transaction rolls back on unhandled exception.
|
|
511
541
|
|
|
@@ -540,7 +570,9 @@ class TestConcurrentScalePerformance:
|
|
|
540
570
|
They validate performance characteristics, not functionality.
|
|
541
571
|
"""
|
|
542
572
|
|
|
543
|
-
@pytest.mark.skip(
|
|
573
|
+
@pytest.mark.skip(
|
|
574
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
575
|
+
)
|
|
544
576
|
@pytest.mark.benchmark
|
|
545
577
|
async def test_skip_locked_throughput_under_contention(self) -> None:
|
|
546
578
|
"""Benchmark SKIP LOCKED throughput with high contention.
|
|
@@ -562,7 +594,9 @@ class TestConcurrentScalePerformance:
|
|
|
562
594
|
- Contention rate < 50%
|
|
563
595
|
"""
|
|
564
596
|
|
|
565
|
-
@pytest.mark.skip(
|
|
597
|
+
@pytest.mark.skip(
|
|
598
|
+
reason="Blocked: db.with_transaction() not yet available (OMN-1524)"
|
|
599
|
+
)
|
|
566
600
|
@pytest.mark.benchmark
|
|
567
601
|
async def test_optimistic_lock_retry_overhead(self) -> None:
|
|
568
602
|
"""Benchmark overhead of optimistic lock conflict resolution.
|
|
@@ -44,7 +44,7 @@ class TestContractValidation:
|
|
|
44
44
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
45
45
|
# Skip if not yet implemented (scaffold phase)
|
|
46
46
|
if not contract_path.exists():
|
|
47
|
-
pytest.skip(f"File
|
|
47
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
48
48
|
assert contract_path.exists(), f"Missing contract: {contract_path}"
|
|
49
49
|
|
|
50
50
|
@pytest.mark.parametrize("node_name", CORE_8_NODES)
|
|
@@ -56,7 +56,7 @@ class TestContractValidation:
|
|
|
56
56
|
"""
|
|
57
57
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
58
58
|
if not contract_path.exists():
|
|
59
|
-
pytest.skip(f"File
|
|
59
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
60
60
|
|
|
61
61
|
with open(contract_path, encoding="utf-8") as f:
|
|
62
62
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -82,7 +82,7 @@ class TestContractValidation:
|
|
|
82
82
|
"""
|
|
83
83
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
84
84
|
if not contract_path.exists():
|
|
85
|
-
pytest.skip(f"File
|
|
85
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
86
86
|
|
|
87
87
|
with open(contract_path, encoding="utf-8") as f:
|
|
88
88
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -158,7 +158,7 @@ class TestContractRuntimeLoad:
|
|
|
158
158
|
"""
|
|
159
159
|
node_path: Path = NODES_DIR / node_name / "node.py"
|
|
160
160
|
if not node_path.exists():
|
|
161
|
-
pytest.skip(f"File
|
|
161
|
+
pytest.skip(f"File pending implementation: {node_path}")
|
|
162
162
|
|
|
163
163
|
# Convert node_name to class name (e.g., memory_storage_effect -> Node...)
|
|
164
164
|
class_name: str = "Node" + "".join(
|
|
@@ -188,7 +188,7 @@ class TestContractRuntimeLoad:
|
|
|
188
188
|
"""
|
|
189
189
|
node_path: Path = NODES_DIR / node_name / "node.py"
|
|
190
190
|
if not node_path.exists():
|
|
191
|
-
pytest.skip(f"File
|
|
191
|
+
pytest.skip(f"File pending implementation: {node_path}")
|
|
192
192
|
|
|
193
193
|
class_name: str = "Node" + "".join(
|
|
194
194
|
word.capitalize() for word in node_name.split("_")
|
|
@@ -275,7 +275,7 @@ class TestOrchestratorEventValidation:
|
|
|
275
275
|
"""
|
|
276
276
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
277
277
|
if not contract_path.exists():
|
|
278
|
-
pytest.skip(f"File
|
|
278
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
279
279
|
|
|
280
280
|
with open(contract_path, encoding="utf-8") as f:
|
|
281
281
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -328,7 +328,7 @@ class TestOrchestratorEventValidation:
|
|
|
328
328
|
"""
|
|
329
329
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
330
330
|
if not contract_path.exists():
|
|
331
|
-
pytest.skip(f"File
|
|
331
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
332
332
|
|
|
333
333
|
with open(contract_path, encoding="utf-8") as f:
|
|
334
334
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -369,7 +369,7 @@ class TestOrchestratorEventValidation:
|
|
|
369
369
|
"""
|
|
370
370
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
371
371
|
if not contract_path.exists():
|
|
372
|
-
pytest.skip(f"File
|
|
372
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
373
373
|
|
|
374
374
|
with open(contract_path, encoding="utf-8") as f:
|
|
375
375
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -457,7 +457,7 @@ class TestHandlerRoutingKeyAlignment:
|
|
|
457
457
|
"""
|
|
458
458
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
459
459
|
if not contract_path.exists():
|
|
460
|
-
pytest.skip(f"File
|
|
460
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
461
461
|
|
|
462
462
|
with open(contract_path, encoding="utf-8") as f:
|
|
463
463
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -546,7 +546,7 @@ class TestHandlerRoutingKeyAlignment:
|
|
|
546
546
|
"""
|
|
547
547
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
548
548
|
if not contract_path.exists():
|
|
549
|
-
pytest.skip(f"File
|
|
549
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
550
550
|
|
|
551
551
|
with open(contract_path, encoding="utf-8") as f:
|
|
552
552
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -575,7 +575,7 @@ class TestHandlerRoutingKeyAlignment:
|
|
|
575
575
|
"""
|
|
576
576
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
577
577
|
if not contract_path.exists():
|
|
578
|
-
pytest.skip(f"File
|
|
578
|
+
pytest.skip(f"File pending implementation: {contract_path}")
|
|
579
579
|
|
|
580
580
|
with open(contract_path, encoding="utf-8") as f:
|
|
581
581
|
data: MappingResultDict = yaml.safe_load(f)
|
|
@@ -234,7 +234,7 @@ class TestContractEnforcement:
|
|
|
234
234
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
235
235
|
# Skip if not yet implemented
|
|
236
236
|
if not contract_path.exists():
|
|
237
|
-
pytest.skip(f"Contract
|
|
237
|
+
pytest.skip(f"Contract pending implementation: {contract_path}")
|
|
238
238
|
assert contract_path.exists()
|
|
239
239
|
|
|
240
240
|
@pytest.mark.parametrize("node_name", CORE_8_NODES)
|
|
@@ -249,7 +249,7 @@ class TestContractEnforcement:
|
|
|
249
249
|
"""
|
|
250
250
|
contract_path: Path = NODES_DIR / node_name / "contract.yaml"
|
|
251
251
|
if not contract_path.exists():
|
|
252
|
-
pytest.skip(f"Contract
|
|
252
|
+
pytest.skip(f"Contract pending implementation: {contract_path}")
|
|
253
253
|
|
|
254
254
|
result: ContractValidationResult = validate_contract(contract_path)
|
|
255
255
|
assert result.valid, f"Contract {node_name} failed validation: {result.error}"
|
|
@@ -280,7 +280,7 @@ class TestContractEnforcement:
|
|
|
280
280
|
"""
|
|
281
281
|
node_py_path: Path = NODES_DIR / node_name / "node.py"
|
|
282
282
|
if not node_py_path.exists():
|
|
283
|
-
pytest.skip(f"node.py not
|
|
283
|
+
pytest.skip(f"node.py not yet created: {node_py_path}")
|
|
284
284
|
|
|
285
285
|
result: SuperInitValidationResult = validate_super_init_pattern(node_py_path)
|
|
286
286
|
assert result.valid, (
|
|
@@ -49,7 +49,7 @@ class TestNodeImports:
|
|
|
49
49
|
assert module is not None
|
|
50
50
|
except ImportError as e:
|
|
51
51
|
# Expected during scaffold phase
|
|
52
|
-
pytest.skip(f"Node package
|
|
52
|
+
pytest.skip(f"Node package pending implementation: {e}")
|
|
53
53
|
|
|
54
54
|
def test_nodes_package_exports_core_nodes(self) -> None:
|
|
55
55
|
"""Verify __all__ in nodes package lists all Core 8 nodes.
|
|
@@ -99,7 +99,7 @@ class TestNodeStructure:
|
|
|
99
99
|
"node_semantic_analyzer_compute",
|
|
100
100
|
# EFFECT node with MOCK handlers: Temporary mock implementations for
|
|
101
101
|
# development/testing. Will be removed when omnibase_infra is integrated.
|
|
102
|
-
# TODO: Remove from exclusion list when migrating to real handlers.
|
|
102
|
+
# TODO(OMN-6655): Remove from exclusion list when migrating to real handlers.
|
|
103
103
|
"node_memory_retrieval_effect",
|
|
104
104
|
# ORCHESTRATOR node with domain-specific lifecycle handlers:
|
|
105
105
|
# - handler_memory_tick: TTL evaluation and event emission
|
|
@@ -129,7 +129,7 @@ class TestNodeStructure:
|
|
|
129
129
|
"""
|
|
130
130
|
node_dir: Path = NODES_DIR / node_name
|
|
131
131
|
if not node_dir.exists():
|
|
132
|
-
pytest.skip(f"Directory
|
|
132
|
+
pytest.skip(f"Directory pending creation: {node_dir}")
|
|
133
133
|
init_path: Path = node_dir / "__init__.py"
|
|
134
134
|
assert init_path.exists(), f"Missing __init__.py: {init_path}"
|
|
135
135
|
|
|
@@ -158,7 +158,7 @@ class TestNodeStructure:
|
|
|
158
158
|
|
|
159
159
|
node_dir: Path = NODES_DIR / node_name
|
|
160
160
|
if not node_dir.exists():
|
|
161
|
-
pytest.skip(f"Directory
|
|
161
|
+
pytest.skip(f"Directory pending creation: {node_dir}")
|
|
162
162
|
handlers_dir: Path = node_dir / "handlers"
|
|
163
163
|
assert not handlers_dir.exists(), (
|
|
164
164
|
f"handlers/ should not exist in {node_name} - "
|
|
@@ -1332,7 +1332,9 @@ old_function = new_function # alias
|
|
|
1332
1332
|
finally:
|
|
1333
1333
|
cleanup_temp_file(path)
|
|
1334
1334
|
|
|
1335
|
-
def test_detects_todo_remove_deprecated(
|
|
1335
|
+
def test_detects_todo_remove_deprecated( # TODO_FORMAT_EXEMPT: test fixture
|
|
1336
|
+
self,
|
|
1337
|
+
) -> None:
|
|
1336
1338
|
"""Test detection of TODO to remove deprecated code."""
|
|
1337
1339
|
code = """
|
|
1338
1340
|
# TODO: remove deprecated function in next version
|
|
@@ -2084,7 +2086,9 @@ class TestValidateNoBackwardCompatAdditional:
|
|
|
2084
2086
|
violations = validate_no_backward_compat(path)
|
|
2085
2087
|
assert violations == []
|
|
2086
2088
|
|
|
2087
|
-
def test_delete_deprecated_todo(
|
|
2089
|
+
def test_delete_deprecated_todo( # TODO_FORMAT_EXEMPT: test fixture
|
|
2090
|
+
self,
|
|
2091
|
+
) -> None:
|
|
2088
2092
|
"""Test detection of TODO: delete deprecated."""
|
|
2089
2093
|
code = """
|
|
2090
2094
|
# TODO: delete deprecated code
|