omninode-memory 0.18.1__tar.gz → 0.18.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.18.2/.github/workflows/auto-tag-on-merge.yml +146 -0
- omninode_memory-0.18.2/.github/workflows/ban-hardcoded-runner-ip.yml +32 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/call-occ-companion-effect.yml +28 -5
- omninode_memory-0.18.2/.github/workflows/kb-doc-gate.yml +42 -0
- omninode_memory-0.18.2/.github/workflows/public-repo-hygiene.yml +42 -0
- omninode_memory-0.18.2/.kb-doc-gate.yaml +15 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.pre-commit-config.yaml +14 -7
- omninode_memory-0.18.2/.public-repo-hygiene.yaml +59 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/CHANGELOG.md +12 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/CLAUDE.md +18 -1
- omninode_memory-0.18.2/PKG-INFO +146 -0
- omninode_memory-0.18.2/README.md +102 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/pyproject.toml +3 -3
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/test_selection_adjacency.yaml +13 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/handler_subscription.py +82 -93
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +23 -7
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/introspection.py +7 -5
- omninode_memory-0.18.2/tests/gates/test_ban_hardcoded_runner_ip_scope.py +78 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_hybrid_retrieval_fusion.py +2 -1
- omninode_memory-0.18.2/tests/unit/test_auto_tag_app_token_push_omn18662.py +215 -0
- omninode_memory-0.18.2/tests/unit/test_occ_companion_effect_edited_trigger_omn_18334.py +71 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_validate_ci_precommit_alignment.py +1 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/uv.lock +60 -15
- omninode_memory-0.18.1/.github/workflows/auto-tag-on-merge.yml +0 -17
- omninode_memory-0.18.1/.github/workflows/ban-hardcoded-runner-ip.yml +0 -22
- omninode_memory-0.18.1/AGENT.md +0 -29
- omninode_memory-0.18.1/PKG-INFO +0 -310
- omninode_memory-0.18.1/README.md +0 -266
- omninode_memory-0.18.1/docs/PERFORMANCE_TESTING.md +0 -3
- omninode_memory-0.18.1/docs/architecture/ARCH_002_KAFKA_ABSTRACTION.md +0 -3
- omninode_memory-0.18.1/docs/architecture/MEMORY_DATA_OWNERSHIP.md +0 -3
- omninode_memory-0.18.1/docs/architecture/ONEX_FOUR_NODE_ARCHITECTURE.md +0 -3
- omninode_memory-0.18.1/docs/assets/brand/BRAND.md +0 -153
- omninode_memory-0.18.1/docs/ci/CI_MONITORING_GUIDE.md +0 -348
- omninode_memory-0.18.1/docs/db-split/fk-audit.md +0 -39
- omninode_memory-0.18.1/docs/design/OMN-16765-hybrid-retrieval.md +0 -552
- omninode_memory-0.18.1/docs/environment_variables.md +0 -3
- omninode_memory-0.18.1/docs/handler_reuse_matrix.md +0 -3
- omninode_memory-0.18.1/docs/migrations/MARKET_MIGRATION_BOUNDARY.md +0 -3
- omninode_memory-0.18.1/docs/pii_handling.md +0 -3
- omninode_memory-0.18.1/docs/runbooks/STARTING_MEMORY_SERVICES.md +0 -3
- omninode_memory-0.18.1/docs/runtime/RUNTIME_PLUGINS.md +0 -3
- omninode_memory-0.18.1/docs/stub_protocols.md +0 -58
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.claude/architecture-handshake.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.env.example +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.flake8 +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2/.github}/CODE_OF_CONDUCT.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2/.github}/CONTRIBUTING.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/dependabot.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/required-checks.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/auto-merge.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/build-and-push-migrate-image.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/call-occ-autobind.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/call-reject-skip.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/check-handshake.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/ci.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/contract-validation.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/dep-provenance-gate.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/docs-validate.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/imperative-contract-guard.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/main-target-guard.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/omni-standards-compliance.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/pr-title-check.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/pre-commit.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/release-dry-run.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/release.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/security-scan.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/sibling-lock-refresh.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/stale-todo-gate.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/todo-audit-on-merge.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/url-authority-gate.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/validate-validator-requirements.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/validator-runtime-profiles.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.gitignore +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.markdown-link-check.json +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.onex_ratchets/noncanonical_class_allowlist.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.pre-commit-hooks/reject-deploy-gate-skip-token.sh +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.secrets.baseline +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.serena/project.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/.yamlfmt +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/LICENSE +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/SECURITY.md +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/architecture-handshakes/validator-requirements-baseline.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/architecture-handshakes/validator-requirements.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/contracts/OMN-12245.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations/002_create_memories_table.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/deployment/docker/Dockerfile.migrate +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docker-compose.prod.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docker-compose.yml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-icon-black.png +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-icon-full-color.svg +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-icon-white.png +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-inline-black.png +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-inline-full-color.svg +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-inline-white.png +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-stacked-black.png +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-stacked-full-color.svg +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-stacked-white.png +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-wordmark-black.svg +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-wordmark-grey.svg +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/docs/assets/brand/omninode-wordmark-white.svg +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/examples/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/examples/advanced_architecture_demo.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/pyrightconfig.json +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/check_dep_provenance.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/check_migration_freeze.sh +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/check_no_hardcoded_bolt.sh +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/collect_changed_files.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/detect_test_paths.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/occ_manual_replay_precheck.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/run_runtime_profiles_validator.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/test_selection_loader.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/ci/test_selection_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/graphify_to_memgraph.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/graphify_to_qdrant.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validate_ci_precommit_alignment.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/check_ai_slop.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/foundation_validation_common.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_enum_casing.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_http_imports.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_kafka_imports.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_model_locations.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_naming.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_no_backward_compatibility.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_no_env_fallbacks.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_pydantic_patterns.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_secrets.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_single_class_per_file.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/scripts/validation/validate_spdx_headers.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/_compat_imports.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_concurrency.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_correlation_context.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_db_url.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_error_sanitizer.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_handler_constants.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_health_manager.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_metrics_counter.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_observability_wrapper.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_pii_detector.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_resource_manager.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/adapters/adapter_retry_utils.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/bootstrap.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/crawl/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_context_item_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_data_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_error_code.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_memory_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_migration_status.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_node_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_operation_status.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_preferred_tone.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_priority_level.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_severity.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_subscription_status.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_technical_level.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/enums/enum_trust_level.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/errors/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/errors/embedding_errors.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/adapter_intent_graph_contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/handler_intent.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/handler_subscription_contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_embedding_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_postgres_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/container/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/contracts/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_memory_context.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_memory_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_memory_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/core/model_provenance.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/crawl/types.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/events/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_configuration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_error_details.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_health_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_notes.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_priority.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_semver.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_system_health.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_tags.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/foundation/model_user.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/intelligence/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/memory/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/memory/model_memory_item.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/memory/model_memory_query.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/persona/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/persona/model_persona_signal.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/persona/model_user_persona_v1.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/scoring/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/service/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/service/model_service_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/service/model_service_health.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/service/model_service_registry.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/subscription/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/subscription/constants.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/subscription/model_subscription.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_audit.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_concurrency.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_health_status.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_pii_match.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_pii_type.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_retry_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/models/utils/model_system_health.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/base.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/handler_agent_learning_retrieval.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/mappers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/mappers/util_intent_mapping.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/adapter_kreuzberg_client.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/adapter_embedding_client.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/contract_descriptor.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_decay.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_fusion.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/handlers/handler_persona_classify.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_result.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/adapters/adapter_postgres_persona.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/base_protocols.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/data_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/error_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/protocol_embedding.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/adapters.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/contract_topics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/dispatch_handlers.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/handler_lifecycle.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/handler_lifecycle_contract.yaml +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/message_type_registration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/plugin.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/runtime/wiring.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/secrets.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/settings.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/tools/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/tools/contract_linter.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/tools/validators/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/tools/validators/validator_contract.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/src/omnimemory/topics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/conftest.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/gates/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/gates/test_consumer_group_name_authorization.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/test_handler_intent.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/handlers/test_handler_semantic_compute.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/conftest.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/nodes/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_entry_point_discovery.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_golden_chain_memgraph_ingestion.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_golden_chain_qdrant_ingestion.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_handler_subscription.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_node_agent_coordinator.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/integration/test_persona_round_trip.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/models/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/models/contracts/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/models/contracts/test_extended_contracts.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/models/events/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/models/events/test_model_intent_classified_event.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/models/test_frozen_boundary_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_memory_retrieval_effect/test_contract_descriptor.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_memory_retrieval_effect/test_dispatch_entrypoint_contract.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/scripts/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/scripts/test_check_dep_provenance.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_bootstrap.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_concurrency.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_config_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_contract_validation.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_contract_version.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_db_url.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_foundation.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_health_manager.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_migration_progress.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_node_enforcement.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_node_imports.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_observability_manager.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_observability_metrics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_performance.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_resource_manager.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_secrets_provider.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_settings.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/test_validation_scripts.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/adapters/test_adapter_pii_detector.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/adapters/test_pii_live_call_paths.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/handlers/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/handlers/test_subscription_typing.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/fixtures/omn16765/hybrid_retrieval_corpus.json +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_activation_decay.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_decay_ranking.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_handler_agent_learning_retrieval.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_handler_qdrant.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_handler_routing_boot_resolvable.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_navigation_history_reducer_contract.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_node_agent_learning_retrieval_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_persona_builder.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/nodes/test_persona_storage_retrieval.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/conftest.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_adapters.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_contract_handler_completeness.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_contract_topics.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_dispatch_handlers.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_introspection.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_memory_subscription_group_is_authorized.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_message_type_registration.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_plugin.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_plugin_integration_wiring.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_standalone_handler_contracts.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/runtime/test_wiring.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/scripts/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/scripts/test_check_ai_slop.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/scripts/test_collect_changed_files.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/scripts/test_occ_manual_replay_precheck.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_ci_workflow_shape.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_contract_linter.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_detect_test_paths.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_dispatch_retrieval_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_entry_points.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_graphify_to_memgraph.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_graphify_to_qdrant.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_ingestion_models.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_model_user_persona_v1.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_no_duplicate_node_uuids.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_persona_enums.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_scope_mapping_config.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_sql_placeholders.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/unit/test_validate_kafka_imports.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/workflows/__init__.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/tests/workflows/test_auto_merge_workflow.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/validate_architecture_improvements.py +0 -0
- {omninode_memory-0.18.1 → omninode_memory-0.18.2}/validation/runtime_profiles_allowlist.yaml +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
name: Auto-Tag on Merge
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [closed]
|
|
6
|
+
|
|
7
|
+
# OMN-18662: this job used to delegate to omnibase_core's shared
|
|
8
|
+
# `auto-tag-reusable.yml`, which pushes the release tag with the job's default
|
|
9
|
+
# workflow token. A push made with that token delivers no push event, so
|
|
10
|
+
# `release.yml` -- whose only automatic trigger is `push: tags:` -- never
|
|
11
|
+
# started, the tag sat unconsumed, and every cut needed a hand
|
|
12
|
+
# `workflow_dispatch`.
|
|
13
|
+
#
|
|
14
|
+
# An App-token push DOES start push-driven CI in this org (omni_home/CLAUDE.md,
|
|
15
|
+
# corrected 2026-09-16 under OMN-18273; live proof: omnibase_spi run
|
|
16
|
+
# 35134173847, `event: push`, `actor: onexbot-occ-writer[bot]`). Two conditions
|
|
17
|
+
# make that true, and both are properties of this job rather than of the token:
|
|
18
|
+
#
|
|
19
|
+
# 1. the checkout does not persist credentials. A default `actions/checkout`
|
|
20
|
+
# writes a basic-auth `http.<origin>.extraheader` carrying the workflow
|
|
21
|
+
# token, and that header OVERRIDES any credential in the remote URL -- the
|
|
22
|
+
# confound that produced the wrong org-wide finding in August.
|
|
23
|
+
# 2. the mint fails closed. No `|| secrets.GITHUB_TOKEN` fallback anywhere in
|
|
24
|
+
# the job: a fallback silently restores the workflow token, the push is
|
|
25
|
+
# suppressed again, and the job still reports success.
|
|
26
|
+
#
|
|
27
|
+
# Why this is inlined here rather than fixed in the shared reusable: the caller
|
|
28
|
+
# pinned that reusable at a ref on omnibase_core's `main`, which is
|
|
29
|
+
# release-synced (OMN-16289) and only advances when a release publishes -- so a
|
|
30
|
+
# fix landed there would not be live for the NEXT cut, only the one after it,
|
|
31
|
+
# which is the cut this ticket exists to stop hand-dispatching. The reusable
|
|
32
|
+
# also cannot see the org App credentials unless every caller passes them. It is
|
|
33
|
+
# left byte-unchanged for whatever still calls it. Precedent and shape:
|
|
34
|
+
# omnibase_core#1703 and omnibase_spi#308, under OMN-18658.
|
|
35
|
+
|
|
36
|
+
jobs:
|
|
37
|
+
auto-tag:
|
|
38
|
+
if: >-
|
|
39
|
+
github.event.pull_request.merged == true &&
|
|
40
|
+
(contains(github.event.pull_request.labels.*.name, 'release') ||
|
|
41
|
+
startsWith(github.event.pull_request.title, 'release:') ||
|
|
42
|
+
startsWith(github.event.pull_request.title, 'chore: release') ||
|
|
43
|
+
startsWith(github.event.pull_request.title, 'chore(release)'))
|
|
44
|
+
# OMNI_RUNNER_SELECTOR_V1 - trusted events default to self-hosted omnibase-ci; pull_request defaults to ubuntu-latest
|
|
45
|
+
runs-on: >-
|
|
46
|
+
${{
|
|
47
|
+
(github.event_name == 'pull_request' &&
|
|
48
|
+
github.event.pull_request.head.repo.full_name != github.repository)
|
|
49
|
+
&& fromJSON(vars.OMNI_PUBLIC_PR_RUNS_ON_JSON || '["ubuntu-latest"]')
|
|
50
|
+
|| fromJSON(vars.OMNI_TRUSTED_CI_RUNS_ON_JSON || '["self-hosted","omnibase-ci"]')
|
|
51
|
+
}}
|
|
52
|
+
permissions:
|
|
53
|
+
contents: read
|
|
54
|
+
steps:
|
|
55
|
+
# Condition 1. `persist-credentials: false` is load-bearing, not hygiene:
|
|
56
|
+
# with the default `true`, checkout v7 writes the workflow token into a
|
|
57
|
+
# separate credential file and includes it through `includeIf.gitdir`, so
|
|
58
|
+
# it overrides the App credential in the push URL below and the push
|
|
59
|
+
# authenticates as github-actions[bot] again.
|
|
60
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
61
|
+
with:
|
|
62
|
+
persist-credentials: false
|
|
63
|
+
|
|
64
|
+
- name: Extract version from pyproject.toml
|
|
65
|
+
id: version
|
|
66
|
+
run: |
|
|
67
|
+
set -euo pipefail
|
|
68
|
+
VERSION=$(grep -m1 '^version' pyproject.toml | sed 's/.*"\(.*\)".*/\1/')
|
|
69
|
+
if [ -z "$VERSION" ]; then
|
|
70
|
+
echo "::error::could not read a version from pyproject.toml"
|
|
71
|
+
exit 1
|
|
72
|
+
fi
|
|
73
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
74
|
+
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"
|
|
75
|
+
echo "Detected version: $VERSION (tag: v$VERSION)"
|
|
76
|
+
|
|
77
|
+
- name: Check if tag already exists
|
|
78
|
+
id: check
|
|
79
|
+
run: |
|
|
80
|
+
set -euo pipefail
|
|
81
|
+
if git rev-parse "refs/tags/${{ steps.version.outputs.tag }}" >/dev/null 2>&1; then
|
|
82
|
+
echo "exists=true" >> "$GITHUB_OUTPUT"
|
|
83
|
+
echo "Tag ${{ steps.version.outputs.tag }} already exists — skipping"
|
|
84
|
+
else
|
|
85
|
+
echo "exists=false" >> "$GITHUB_OUTPUT"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Condition 2. `actions/create-github-app-token` fails the step when it
|
|
89
|
+
# cannot mint, which fails the job. There is deliberately no `||`
|
|
90
|
+
# expression joining this output to the workflow token: an unmintable
|
|
91
|
+
# token must stop the tag from being pushed at all, because a tag pushed
|
|
92
|
+
# with the workflow token is worse than no tag -- it is unconsumable and
|
|
93
|
+
# cannot be re-pushed without deleting it first.
|
|
94
|
+
#
|
|
95
|
+
# `permission-*` REPLACES the installation's permission set with exactly
|
|
96
|
+
# what is listed. Both scopes are required: `contents` to create the ref,
|
|
97
|
+
# `workflows` because a release commit can legitimately carry changes
|
|
98
|
+
# under .github/workflows/ and GitHub refuses a push that introduces them
|
|
99
|
+
# without it.
|
|
100
|
+
- name: Mint onexbot-occ-writer app token
|
|
101
|
+
id: app-token
|
|
102
|
+
if: steps.check.outputs.exists == 'false'
|
|
103
|
+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
|
104
|
+
with:
|
|
105
|
+
app-id: ${{ secrets.ONEXBOT_OCC_APP_ID }}
|
|
106
|
+
private-key: ${{ secrets.ONEXBOT_OCC_PRIVATE_KEY }}
|
|
107
|
+
owner: ${{ github.repository_owner }}
|
|
108
|
+
repositories: ${{ github.event.repository.name }}
|
|
109
|
+
permission-contents: write
|
|
110
|
+
permission-workflows: write
|
|
111
|
+
|
|
112
|
+
- name: Create and push tag
|
|
113
|
+
if: steps.check.outputs.exists == 'false'
|
|
114
|
+
env:
|
|
115
|
+
TAG: ${{ steps.version.outputs.tag }}
|
|
116
|
+
APP_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
117
|
+
run: |
|
|
118
|
+
set -euo pipefail
|
|
119
|
+
|
|
120
|
+
# Belt-and-braces on the fail-closed mint. The action above already
|
|
121
|
+
# fails the step when it cannot mint, but an empty token here would
|
|
122
|
+
# otherwise produce an unauthenticated push whose failure mode is a
|
|
123
|
+
# confusing 403 rather than a named one.
|
|
124
|
+
if [ -z "${APP_TOKEN}" ]; then
|
|
125
|
+
echo "::error::onexbot-occ-writer token is empty; refusing to push ${TAG}"
|
|
126
|
+
exit 1
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
# An annotated tag carries a tagger identity. Use the App's real
|
|
130
|
+
# account address -- the numeric prefix is what links it to the bot
|
|
131
|
+
# account; a fabricated address renders unlinked and proves nothing
|
|
132
|
+
# (OMN-18273 AC-4).
|
|
133
|
+
git config user.name "onexbot-occ-writer[bot]"
|
|
134
|
+
git config user.email "307849072+onexbot-occ-writer[bot]@users.noreply.github.com"
|
|
135
|
+
|
|
136
|
+
git tag "${TAG}" -m "Release ${TAG}"
|
|
137
|
+
|
|
138
|
+
# The credential travels in the remote URL for this one command. With
|
|
139
|
+
# `persist-credentials: false` above there is no `extraheader` left to
|
|
140
|
+
# override it, which is the whole point of the pair.
|
|
141
|
+
git push \
|
|
142
|
+
"https://x-access-token:${APP_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" \
|
|
143
|
+
"refs/tags/${TAG}"
|
|
144
|
+
|
|
145
|
+
echo "Pushed tag ${TAG} as onexbot-occ-writer[bot]"
|
|
146
|
+
echo "release.yml is expected to start from this push, with event=push and no workflow_dispatch"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
# Calls the reusable ban-hardcoded-runner-ip check from omniclaude.
|
|
6
|
+
# Implements OMN-10603.
|
|
7
|
+
#
|
|
8
|
+
# OMN-17993: the paths: filter must list every path the reusable scans. It
|
|
9
|
+
# listed workflows only, while the reusable also scans tests/** — the blind
|
|
10
|
+
# spot that let omnibase_compat, a repository that ships this same gate, carry
|
|
11
|
+
# the exact banned literal as a test fixture. A widened scanner behind a filter
|
|
12
|
+
# that still excludes tests/ is never triggered by the change that introduces
|
|
13
|
+
# the violation.
|
|
14
|
+
|
|
15
|
+
name: Ban Hardcoded Runner IP
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
pull_request:
|
|
19
|
+
branches: [main, dev]
|
|
20
|
+
paths:
|
|
21
|
+
- .github/workflows/**
|
|
22
|
+
- tests/**
|
|
23
|
+
merge_group:
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
ban-hardcoded-runner-ip:
|
|
27
|
+
# OMN-17993: pinned to an exact SHA, not @main. omniclaude main lags dev by
|
|
28
|
+
# design (release-synced), so @main still resolves to the pre-widening scanner
|
|
29
|
+
# body that scans workflow files only and exits 0 on a tests-only diff.
|
|
30
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@6f965a67ea2873fd76df955bca54b3a6472d2a91
|
|
31
|
+
permissions:
|
|
32
|
+
contents: read
|
{omninode_memory-0.18.1 → omninode_memory-0.18.2}/.github/workflows/call-occ-companion-effect.yml
RENAMED
|
@@ -56,10 +56,21 @@
|
|
|
56
56
|
# main, re-pin this `uses:` to `@main` or a main SHA so the caller no longer
|
|
57
57
|
# tracks a moving dev branch.
|
|
58
58
|
#
|
|
59
|
-
# SECRET-FREE
|
|
60
|
-
#
|
|
61
|
-
# dev-lane listener
|
|
62
|
-
#
|
|
59
|
+
# BROKER-SECRET-FREE, SASL-CREDENTIALLED (OMN-14813 + OMN-18012). The paragraph
|
|
60
|
+
# this replaces asserted that this workflow needs no Kafka secrets because the
|
|
61
|
+
# dev-lane listener was unauthenticated. The BROKER half still holds and always
|
|
62
|
+
# will:
|
|
63
|
+
# it comes from omnimarket's committed config/ci_bus_lanes.yaml overlay and must
|
|
64
|
+
# never be a secret, because an opaque broker value is the OMN-14800 silent-
|
|
65
|
+
# repoint surface. The transport half expired at ~16:40Z on 2026-09-07, when
|
|
66
|
+
# OMN-18012 Phase B enabled SASL/SCRAM-SHA-256 on the dev-lane listener. The
|
|
67
|
+
# overlay now DECLARES that transport (SASL_PLAINTEXT / SCRAM-SHA-256 —
|
|
68
|
+
# authenticated, not encrypted) and omnimarket's publisher reads the protocol
|
|
69
|
+
# from it rather than inferring TLS from credential presence. `secrets: inherit`
|
|
70
|
+
# is therefore required below so KAFKA_SASL_{USERNAME,PASSWORD} reach the
|
|
71
|
+
# publisher; without them it fail-fasts on the declared SASL lane instead of
|
|
72
|
+
# publishing unauthenticated. A credential is not a broker address and
|
|
73
|
+
# re-creates none of the OMN-14800 surface.
|
|
63
74
|
#
|
|
64
75
|
# MANUAL REPLAY ENTRYPOINT (OMN-14993): `workflow_dispatch` lets an operator
|
|
65
76
|
# manually re-request a mint for a PR whose original `pull_request` event was
|
|
@@ -104,7 +115,7 @@ name: OCC Companion Effect Publisher
|
|
|
104
115
|
|
|
105
116
|
on:
|
|
106
117
|
pull_request:
|
|
107
|
-
types: [opened, synchronize, reopened, ready_for_review]
|
|
118
|
+
types: [opened, edited, synchronize, reopened, ready_for_review]
|
|
108
119
|
workflow_dispatch:
|
|
109
120
|
inputs:
|
|
110
121
|
pr_number:
|
|
@@ -147,6 +158,13 @@ jobs:
|
|
|
147
158
|
(contains(github.event.pull_request.title, 'OMN-') ||
|
|
148
159
|
contains(github.event.pull_request.head.ref, 'OMN-'))
|
|
149
160
|
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@dev
|
|
161
|
+
# OMN-18012: the dev lane declares SASL_PLAINTEXT/SCRAM-SHA-256, so the
|
|
162
|
+
# publisher needs the KAFKA_SASL_* credentials. The broker is still
|
|
163
|
+
# resolved from omnimarket's committed overlay, never from a secret.
|
|
164
|
+
# pragma: allowlist secret -- `secrets: inherit` is a GHA syntax keyword,
|
|
165
|
+
# not a literal secret; the repo secret scanner's Secret Keyword heuristic
|
|
166
|
+
# false-positives on the word "secrets:" here.
|
|
167
|
+
secrets: inherit # pragma: allowlist secret
|
|
150
168
|
with:
|
|
151
169
|
lane: dev
|
|
152
170
|
|
|
@@ -228,6 +246,11 @@ jobs:
|
|
|
228
246
|
|
|
229
247
|
- name: Publish onex.cmd.omnimarket.occ-companion-effect-requested.v1 (manual replay)
|
|
230
248
|
env:
|
|
249
|
+
# OMN-18012: same declared-SASL lane as the reusable this job
|
|
250
|
+
# mirrors. The recovery path must not be the one that cannot
|
|
251
|
+
# authenticate.
|
|
252
|
+
KAFKA_SASL_USERNAME: ${{ secrets.KAFKA_SASL_USERNAME }}
|
|
253
|
+
KAFKA_SASL_PASSWORD: ${{ secrets.KAFKA_SASL_PASSWORD }}
|
|
231
254
|
RUNNER_IS_TRUSTED: "true"
|
|
232
255
|
PR_REPO: ${{ github.repository }}
|
|
233
256
|
LANE: dev
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2026 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
# KB Doc Gate — thin caller. OMN-17172 (fleet rollout; OMN-16589 built the gate).
|
|
5
|
+
#
|
|
6
|
+
# Canonical docs live in the knowledge-base repo. This gate keeps this repo's
|
|
7
|
+
# markdown inside the allowed set stated by the operator ruling of 2026-09-01:
|
|
8
|
+
# root README.md, root CLAUDE.md or anything under .claude/, CHANGELOG*.md,
|
|
9
|
+
# LICENSE*, root SECURITY.md, .github/**, skills|commands|agents/**, and the
|
|
10
|
+
# tests/**/{fixtures,data,golden}/** subtrees. Everything else is documentation
|
|
11
|
+
# that must leave.
|
|
12
|
+
#
|
|
13
|
+
# mode: strict — fails if ANY markdown outside the allowed set EXISTS on the
|
|
14
|
+
# branch, not merely when a PR touches one. This repo's KB Wave-4 migration
|
|
15
|
+
# landed in OMN-16602 and its residual doc count is zero, which is the
|
|
16
|
+
# precondition for strict; running it earlier would have blocked every
|
|
17
|
+
# unrelated PR against the then-existing sprawl. The authoritative setting is
|
|
18
|
+
# .kb-doc-gate.yaml at this repo's root — a `mode:` there always wins over the
|
|
19
|
+
# `with: mode:` argument below, which is kept in sync for legibility.
|
|
20
|
+
#
|
|
21
|
+
# Validator + reusable workflow live in omniclaude (mirrors deploy-gate.yml's
|
|
22
|
+
# thin-caller pattern). Pinned by immutable SHA, not @main: omniclaude's main is
|
|
23
|
+
# release-synced and carries neither the reusable workflow nor
|
|
24
|
+
# scripts/kb_doc_gate.py. The pin is a SINGLE source of truth — the reusable
|
|
25
|
+
# checks its validator out at github.job_workflow_sha, i.e. this very SHA — so
|
|
26
|
+
# advancing the gate is one line here, via a normal PR.
|
|
27
|
+
#
|
|
28
|
+
# REQUIRED status check: the surfaced context is 'kb-doc-gate / kb-doc-gate'
|
|
29
|
+
# (this job's id / the reusable job's name). Removing this file wedges the
|
|
30
|
+
# branch rather than silently dropping the gate.
|
|
31
|
+
|
|
32
|
+
name: KB Doc Gate
|
|
33
|
+
|
|
34
|
+
on:
|
|
35
|
+
pull_request:
|
|
36
|
+
branches: [dev]
|
|
37
|
+
|
|
38
|
+
jobs:
|
|
39
|
+
kb-doc-gate:
|
|
40
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/kb-doc-gate-reusable.yml@6f965a67ea2873fd76df955bca54b3a6472d2a91
|
|
41
|
+
with:
|
|
42
|
+
mode: strict
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
# Public Repo Hygiene -- thin caller. OMN-18016, epic OMN-17992.
|
|
5
|
+
#
|
|
6
|
+
# This repository is PUBLIC. The gate refuses internal operating detail landing
|
|
7
|
+
# in it: an undeclared top-level directory, an agent-state or evidence tree, a
|
|
8
|
+
# misplaced dated document, a brand asset, an env file, cloud identity, a
|
|
9
|
+
# private address, an operator machine path, a private repository name, and
|
|
10
|
+
# internal-KB prose in a public README.
|
|
11
|
+
#
|
|
12
|
+
# mode: report. The gate records every finding and exits 0, so it lands without
|
|
13
|
+
# blocking unrelated PRs on a repository that carries pre-existing residue. It
|
|
14
|
+
# flips to enforce when that residue is FIXED -- never by moving it into
|
|
15
|
+
# .public-repo-hygiene.yaml.
|
|
16
|
+
#
|
|
17
|
+
# Layer (a) reads .public-repo-hygiene.yaml at this repo's root; the gate
|
|
18
|
+
# refuses to run without it rather than treating an absent config as an empty
|
|
19
|
+
# allowlist.
|
|
20
|
+
#
|
|
21
|
+
# `secrets: inherit` IS REQUIRED: the denylist vocabulary lives in a private
|
|
22
|
+
# repository and the reusable workflow mints an installation token to read it.
|
|
23
|
+
# Without the secrets the gate fails CLOSED, which is the correct behaviour and
|
|
24
|
+
# a loud one.
|
|
25
|
+
#
|
|
26
|
+
# The pin is a SINGLE source of truth: the reusable workflow checks its own
|
|
27
|
+
# validator out at github.job_workflow_sha, i.e. this very SHA, so the workflow
|
|
28
|
+
# and the script can never drift apart. Pin to an omniclaude commit on `dev`;
|
|
29
|
+
# `main` is release-synced and does not carry the gate.
|
|
30
|
+
|
|
31
|
+
name: Public Repo Hygiene
|
|
32
|
+
|
|
33
|
+
on:
|
|
34
|
+
pull_request:
|
|
35
|
+
branches: [dev]
|
|
36
|
+
|
|
37
|
+
jobs:
|
|
38
|
+
public-repo-hygiene:
|
|
39
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/public-repo-hygiene-reusable.yml@5003030a79b410a0b08337c9f273b53e0db807e3
|
|
40
|
+
with:
|
|
41
|
+
mode: report
|
|
42
|
+
secrets: inherit
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KB doc gate config — OMN-16602 (omnimemory Wave-4 documentation migration).
|
|
2
|
+
#
|
|
3
|
+
# Canonical docs live in the OmniNode knowledge base; this repo's markdown is
|
|
4
|
+
# now zero outside the allowed set, so the gate runs in whole-tree `strict`
|
|
5
|
+
# mode rather than `diff`. Strict fails a PR when ANY tracked markdown outside
|
|
6
|
+
# the allowed set exists on the branch, which is what keeps a scrubbed repo
|
|
7
|
+
# scrubbed. Validator + allowed set: omniclaude/scripts/kb_doc_gate.py.
|
|
8
|
+
#
|
|
9
|
+
# No repo-specific `allowed:` entries: everything that survives here
|
|
10
|
+
# (README.md, CLAUDE.md, .claude/**, CHANGELOG.md, LICENSE, SECURITY.md,
|
|
11
|
+
# .github/**) is already in the validator's DEFAULT_ALLOWED. Do not add an
|
|
12
|
+
# `allowed:` glob to keep a new doc — move the doc to the knowledge base.
|
|
13
|
+
#
|
|
14
|
+
# A `mode:` here always wins over the caller workflow's `--mode` argument.
|
|
15
|
+
mode: strict
|
|
@@ -139,15 +139,17 @@ repos:
|
|
|
139
139
|
rev: v0.21.0
|
|
140
140
|
hooks:
|
|
141
141
|
- id: yamlfmt
|
|
142
|
-
|
|
142
|
+
# .kb-doc-gate.yaml and .public-repo-hygiene.yaml are excluded
|
|
143
|
+
# deliberately (OMN-16602 / OMN-18016): the shared .yamlfmt sets
|
|
144
|
+
# include_document_start:true, and the gate validators' restricted YAML
|
|
145
|
+
# parsers fail closed (exit 2) on the bare '---' marker yamlfmt would
|
|
146
|
+
# insert.
|
|
147
|
+
exclude: ^(\.github/|\.kb-doc-gate\.yaml$|\.public-repo-hygiene\.yaml$)
|
|
143
148
|
|
|
144
149
|
# Essential file formatting (standard across ecosystem)
|
|
145
150
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
146
151
|
rev: v6.0.0
|
|
147
152
|
hooks:
|
|
148
|
-
- id: trailing-whitespace
|
|
149
|
-
args: [--markdown-linebreak-ext=md]
|
|
150
|
-
exclude: ^\.github/workflows/
|
|
151
153
|
- id: end-of-file-fixer
|
|
152
154
|
exclude: ^(\.github/workflows/|\.mcp\.json$)
|
|
153
155
|
- id: check-merge-conflict
|
|
@@ -412,8 +414,7 @@ repos:
|
|
|
412
414
|
entry: >
|
|
413
415
|
bash -c 'PLAN_FILES=$(git diff --cached --name-only -- "docs/plans/"); if [ -n "$PLAN_FILES"
|
|
414
416
|
]; then echo "ERROR: Planning docs must live in omni_home/docs/plans/, not in this repo:"; echo
|
|
415
|
-
"$PLAN_FILES"; echo ""; echo "Move your file to: /
|
|
416
|
-
exit 1; fi'
|
|
417
|
+
"$PLAN_FILES"; echo ""; echo "Move your file to: \$OMNI_HOME/docs/plans/"; exit 1; fi'
|
|
417
418
|
language: system
|
|
418
419
|
pass_filenames: false
|
|
419
420
|
always_run: true
|
|
@@ -554,6 +555,12 @@ repos:
|
|
|
554
555
|
language: script
|
|
555
556
|
pass_filenames: true
|
|
556
557
|
stages: [commit-msg]
|
|
558
|
+
- id: strip-ai-coauthor-trailer
|
|
559
|
+
name: Strip AI-generated Co-Authored-By trailers from commit messages
|
|
560
|
+
entry: perl -i -ne 'print unless /^co-authored-by:.*claude.*noreply\@anthropic\.com/i'
|
|
561
|
+
language: system
|
|
562
|
+
pass_filenames: true
|
|
563
|
+
stages: [commit-msg]
|
|
557
564
|
|
|
558
565
|
# OMN-13291 (W0): validator-requirements fleet gate. Reports ALL missing
|
|
559
566
|
# required gates for omnimemory against omnibase_core's
|
|
@@ -575,7 +582,7 @@ repos:
|
|
|
575
582
|
- architecture-handshakes/validator-requirements-baseline.yaml
|
|
576
583
|
|
|
577
584
|
# Configuration
|
|
578
|
-
default_install_hook_types: [pre-commit, pre-push]
|
|
585
|
+
default_install_hook_types: [pre-commit, pre-push, commit-msg]
|
|
579
586
|
default_stages: [pre-commit]
|
|
580
587
|
fail_fast: false
|
|
581
588
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Public-repository hygiene gate — this repo's declaration (OMN-18014).
|
|
2
|
+
#
|
|
3
|
+
# Layer (a) of the gate: the TOP-LEVEL PATH ALLOWLIST. Anything tracked at the
|
|
4
|
+
# repository root that is not named below fails. This is the half that refuses
|
|
5
|
+
# the next junk directory nobody has invented yet — a denylist must anticipate
|
|
6
|
+
# that directory, an allowlist does not.
|
|
7
|
+
#
|
|
8
|
+
# Seeded from OmniNode-ai/omnimemory@dev at adoption time, MINUS the entries that
|
|
9
|
+
# are themselves findings. Adding an entry here is a decision to publish that
|
|
10
|
+
# directory, not a formality.
|
|
11
|
+
#
|
|
12
|
+
# WITHHELD AT ADOPTION, and they must stay withheld:
|
|
13
|
+
# (none — every root entry in this repo is legitimate)
|
|
14
|
+
#
|
|
15
|
+
# mode: report — the gate records every finding with a per-class count and
|
|
16
|
+
# exits 0. It flips to enforce when the residue is FIXED, never by moving the
|
|
17
|
+
# residue into this file: that is the recurrence mechanism the OMN-17992
|
|
18
|
+
# programme exists to remove.
|
|
19
|
+
|
|
20
|
+
mode: report
|
|
21
|
+
suppression_registry: ".public-repo-hygiene-suppressions.yaml"
|
|
22
|
+
|
|
23
|
+
allowed_top_level:
|
|
24
|
+
- ".claude"
|
|
25
|
+
- ".env.example"
|
|
26
|
+
- ".flake8"
|
|
27
|
+
- ".github"
|
|
28
|
+
- ".gitignore"
|
|
29
|
+
- ".kb-doc-gate.yaml"
|
|
30
|
+
- ".markdown-link-check.json"
|
|
31
|
+
- ".onex_ratchets"
|
|
32
|
+
- ".pre-commit-config.yaml"
|
|
33
|
+
- ".pre-commit-hooks"
|
|
34
|
+
- ".public-repo-hygiene-suppressions.yaml"
|
|
35
|
+
- ".public-repo-hygiene.yaml"
|
|
36
|
+
- ".secrets.baseline"
|
|
37
|
+
- ".serena"
|
|
38
|
+
- ".yamlfmt"
|
|
39
|
+
- "CHANGELOG.md"
|
|
40
|
+
- "CLAUDE.md"
|
|
41
|
+
- "LICENSE"
|
|
42
|
+
- "README.md"
|
|
43
|
+
- "SECURITY.md"
|
|
44
|
+
- "architecture-handshakes"
|
|
45
|
+
- "contract.yaml"
|
|
46
|
+
- "contracts"
|
|
47
|
+
- "deployment"
|
|
48
|
+
- "docker-compose.prod.yml"
|
|
49
|
+
- "docker-compose.yml"
|
|
50
|
+
- "docs"
|
|
51
|
+
- "examples"
|
|
52
|
+
- "pyproject.toml"
|
|
53
|
+
- "pyrightconfig.json"
|
|
54
|
+
- "scripts"
|
|
55
|
+
- "src"
|
|
56
|
+
- "tests"
|
|
57
|
+
- "uv.lock"
|
|
58
|
+
- "validate_architecture_improvements.py"
|
|
59
|
+
- "validation"
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## v0.18.2 (2026-09-18)
|
|
2
|
+
|
|
3
|
+
### Release
|
|
4
|
+
- Cut omnimemory from dev at 0.18.2 by the scheduled release train.
|
|
5
|
+
- 3 release-relevant commit(s) merged since v0.18.1.
|
|
6
|
+
- Opened by the release train, which cuts only when the repo's declared lab-evidence premise holds for the exact candidate commit.
|
|
7
|
+
|
|
8
|
+
### Included Since v0.18.1
|
|
9
|
+
- chore(deps, OMN-13902): refresh omninode sibling locks [bot] (#504)
|
|
10
|
+
- docs(OMN-16602): scrub omnimemory docs to zero residual and require kb-doc-gate strict (#473)
|
|
11
|
+
- build(deps-dev): update neo4j requirement from <6.0.0,>=5.0.0 to >=5.0.0,<7.0.0 (#471)
|
|
12
|
+
|
|
1
13
|
## v0.18.1 (2026-08-31)
|
|
2
14
|
|
|
3
15
|
Patch release cut to ship the OMN-17236 PII detector pattern fixes, which merged
|
|
@@ -31,6 +31,23 @@ pre-commit run --all-files
|
|
|
31
31
|
|
|
32
32
|
MIT SPDX headers required in `src/`, `tests/`, `scripts/`, `examples/` (spec: `omnibase_core/docs/conventions/FILE_HEADERS.md`). Stamp: `onex spdx fix src tests scripts examples` (add `--check` to dry-run). TRAP: the `# spdx-skip: <reason>` bypass is honored by the `onex spdx` CLI only — the local `validate-spdx-headers` pre-commit hook just scans the first 512 bytes for `SPDX-License-Identifier: MIT` and ignores the skip token.
|
|
33
33
|
|
|
34
|
+
## Cross-Repo
|
|
35
|
+
|
|
36
|
+
- Shared platform standards: `~/.claude/CLAUDE.md`
|
|
37
|
+
- Core models and ONEX kernel: [`omnibase_core`](https://github.com/OmniNode-ai/omnibase_core)
|
|
38
|
+
- Platform protocols: [`omnibase_spi`](https://github.com/OmniNode-ai/omnibase_spi)
|
|
39
|
+
- Event bus and PostgreSQL: [`omnibase_infra`](https://github.com/OmniNode-ai/omnibase_infra)
|
|
40
|
+
|
|
41
|
+
## Domain Rules
|
|
42
|
+
|
|
43
|
+
- Qdrant for vector storage, Memgraph for intent/relationship graphs, PostgreSQL for metadata.
|
|
44
|
+
- Document ingestion + semantic retrieval pipeline; PII detection runs before storage.
|
|
45
|
+
- Runnable node handlers (`contract.yaml`) are migrating to `omnimarket`; protocols, models, adapters and `PluginMemory` stay here.
|
|
46
|
+
|
|
34
47
|
## Documentation
|
|
35
48
|
|
|
36
|
-
|
|
49
|
+
Every OmniMemory document lives in the OmniNode knowledge base, not in this repository. The only markdown that remains here is this file, the root `README.md`, `CHANGELOG.md`, `LICENSE`, `SECURITY.md`, and the `.claude/` and `.github/` trees — enforced by the required `kb-doc-gate` check running in `strict` mode (`.kb-doc-gate.yaml`). A pointer stub is not a removal: the README's Documentation section carries the signposting role for the whole repo and is the full page index.
|
|
50
|
+
|
|
51
|
+
- Public: <https://github.com/OmniNode-ai/knowledge-base>
|
|
52
|
+
|
|
53
|
+
High-traffic pages: [Environment Variables](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-environment-variables.md), [Starting OmniMemory Services](https://github.com/OmniNode-ai/knowledge-base/blob/main/runbooks/omnimemory-starting-memory-services.md), [ONEX Four-Node Architecture](https://github.com/OmniNode-ai/knowledge-base/blob/main/architecture/omnimemory-four-node-architecture.md), [PII Handling](https://github.com/OmniNode-ai/knowledge-base/blob/main/guides/omnimemory-pii-handling.md).
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: omninode-memory
|
|
3
|
+
Version: 0.18.2
|
|
4
|
+
Summary: OmniNode memory primitives — models, protocols, and storage adapters for Qdrant, Memgraph, and PostgreSQL backends.
|
|
5
|
+
Project-URL: Homepage, https://github.com/OmniNode-ai/omnimemory
|
|
6
|
+
Project-URL: Repository, https://github.com/OmniNode-ai/omnimemory
|
|
7
|
+
Project-URL: Documentation, https://github.com/OmniNode-ai/knowledge-base
|
|
8
|
+
Project-URL: Issues, https://github.com/OmniNode-ai/omnimemory/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/OmniNode-ai/omnimemory/blob/main/CHANGELOG.md
|
|
10
|
+
Author-email: "OmniNode.ai" <contact@omninode.ai>
|
|
11
|
+
License: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: embeddings,memory,omninode,onex,rag,semantic-search
|
|
14
|
+
Requires-Python: <3.14,>=3.12
|
|
15
|
+
Requires-Dist: aiohttp<4.0.0,>=3.14.1
|
|
16
|
+
Requires-Dist: alembic<2.0.0,>=1.18.5
|
|
17
|
+
Requires-Dist: asyncio-mqtt<1.0.0,>=0.16.2
|
|
18
|
+
Requires-Dist: asyncpg<1.0.0,>=0.31.0
|
|
19
|
+
Requires-Dist: cachetools<8.0.0,>=6.2.4
|
|
20
|
+
Requires-Dist: fastapi<0.142.0,>=0.136.3
|
|
21
|
+
Requires-Dist: httpx<1.0.0,>=0.28.1
|
|
22
|
+
Requires-Dist: mcp<3.0.0,>=1.27.2
|
|
23
|
+
Requires-Dist: omnibase-core<0.48.0,>=0.47.0
|
|
24
|
+
Requires-Dist: omnibase-infra<0.39.0,>=0.38.4
|
|
25
|
+
Requires-Dist: omnibase-spi<0.24.0,>=0.23.0
|
|
26
|
+
Requires-Dist: pinecone-client<7.0.0,>=6.0.0
|
|
27
|
+
Requires-Dist: psutil<8.0.0,>=7.2.2
|
|
28
|
+
Requires-Dist: psycopg2-binary<3.0.0,>=2.9.12
|
|
29
|
+
Requires-Dist: pydantic-settings<3.0.0,>=2.14.2
|
|
30
|
+
Requires-Dist: pydantic<3.0.0,>=2.13.4
|
|
31
|
+
Requires-Dist: python-dotenv<2.0.0,>=1.2.2
|
|
32
|
+
Requires-Dist: pyyaml<7.0.0,>=6.0.3
|
|
33
|
+
Requires-Dist: qdrant-client<1.20.0,>=1.18.0
|
|
34
|
+
Requires-Dist: redis<9.0.0,>=8.0.1
|
|
35
|
+
Requires-Dist: sqlalchemy<3.0.0,>=2.0.51
|
|
36
|
+
Requires-Dist: structlog<26.0.0,>=25.5.0
|
|
37
|
+
Requires-Dist: supabase<3.0.0,>=2.31.0
|
|
38
|
+
Requires-Dist: uvicorn[standard]<1.0.0,>=0.49.0
|
|
39
|
+
Provides-Extra: graph
|
|
40
|
+
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'graph'
|
|
41
|
+
Requires-Dist: neo4j<7.0.0,>=5.0.0; extra == 'graph'
|
|
42
|
+
Requires-Dist: qdrant-client<1.20.0,>=1.18.0; extra == 'graph'
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
|
|
45
|
+
<p align="center">
|
|
46
|
+
<picture>
|
|
47
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/brand/omninode-inline-white.png">
|
|
48
|
+
<source media="(prefers-color-scheme: light)" srcset="docs/assets/brand/omninode-inline-full-color.svg">
|
|
49
|
+
<img alt="omninode" src="docs/assets/brand/omninode-inline-full-color.svg" width="420">
|
|
50
|
+
</picture>
|
|
51
|
+
</p>
|
|
52
|
+
|
|
53
|
+
# OmniMemory
|
|
54
|
+
|
|
55
|
+
[](https://github.com/OmniNode-ai/omnimemory/actions/workflows/ci.yml)
|
|
56
|
+
[](https://www.python.org/downloads/)
|
|
57
|
+
[](https://opensource.org/licenses/MIT)
|
|
58
|
+
[](https://github.com/OmniNode-ai/omnibase_core)
|
|
59
|
+
[](https://github.com/astral-sh/ruff)
|
|
60
|
+
[](https://mypy.readthedocs.io/)
|
|
61
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
62
|
+
|
|
63
|
+
**Memory persistence, recall, and semantic retrieval for the OmniNode platform.** OmniMemory provides ONEX (OmniNode eXecution)-compliant nodes and handlers for storing agent context, indexing embeddings, querying intent graphs, and managing the full memory lifecycle across distributed omni agents.
|
|
64
|
+
|
|
65
|
+
## Documentation
|
|
66
|
+
|
|
67
|
+
**Every OmniMemory document lives in the OmniNode knowledge base, not in this repository.** This README is the landing page and the full index; there are no `docs/` pages here to read.
|
|
68
|
+
|
|
69
|
+
- **[OmniNode knowledge base](https://github.com/OmniNode-ai/knowledge-base)** — public documentation home.
|
|
70
|
+
|
|
71
|
+
**Architecture**
|
|
72
|
+
- [ONEX Four-Node Architecture](https://github.com/OmniNode-ai/knowledge-base/blob/main/architecture/omnimemory-four-node-architecture.md) — the EFFECT / COMPUTE / REDUCER / ORCHESTRATOR archetypes applied to memory
|
|
73
|
+
- [ARCH-002: Kafka Abstraction Rule](https://github.com/OmniNode-ai/knowledge-base/blob/main/architecture/omnimemory-arch-002-kafka-abstraction.md) — why nodes never speak to a broker directly
|
|
74
|
+
|
|
75
|
+
**Reference**
|
|
76
|
+
- [Environment Variables](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-environment-variables.md) — every setting, type, default and constraint
|
|
77
|
+
- [Memory Data Ownership](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-memory-data-ownership.md) — which repository owns which storage service
|
|
78
|
+
- [Runtime Plugin System](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-runtime-plugins.md) — how `PluginMemory` wires into the ONEX kernel
|
|
79
|
+
- [Handler Reuse Matrix](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-handler-reuse-matrix.md) — which `omnibase_infra` handler each memory node reuses
|
|
80
|
+
|
|
81
|
+
**Guides**
|
|
82
|
+
- [PII Handling](https://github.com/OmniNode-ai/knowledge-base/blob/main/guides/omnimemory-pii-handling.md) — detection, sanitization and storage-path integration
|
|
83
|
+
- [Performance Testing](https://github.com/OmniNode-ai/knowledge-base/blob/main/guides/omnimemory-performance-testing.md) — SLA targets, benchmarks and how to read them
|
|
84
|
+
- [Market Migration Boundary](https://github.com/OmniNode-ai/knowledge-base/blob/main/guides/omnimemory-market-migration-boundary.md) — what moves to `omnimarket` and what stays
|
|
85
|
+
|
|
86
|
+
**Runbooks**
|
|
87
|
+
- [Starting OmniMemory Services](https://github.com/OmniNode-ai/knowledge-base/blob/main/runbooks/omnimemory-starting-memory-services.md) — bringing the storage layer up, health checks, troubleshooting
|
|
88
|
+
|
|
89
|
+
Only this README, [CLAUDE.md](CLAUDE.md), [CHANGELOG.md](CHANGELOG.md), [LICENSE](LICENSE), [SECURITY.md](SECURITY.md) and the `.claude/` and `.github/` trees carry markdown in this repository. The `kb-doc-gate` required check runs in `strict` mode (see [`.kb-doc-gate.yaml`](.kb-doc-gate.yaml)) and fails any PR that reintroduces documentation here.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## What This Repo Owns
|
|
94
|
+
|
|
95
|
+
- **Domain models** — memory, crawl, persona, intent, and intelligence Pydantic models in `src/omnimemory/models/`
|
|
96
|
+
- **Protocol interfaces** — `ProtocolEmbeddingClient`, `ProtocolEmbeddingProvider`, `ProtocolIntentGraphAdapter`, `ProtocolSecretsProvider` and the base protocols in `src/omnimemory/protocols/`
|
|
97
|
+
- **Storage adapters** — Qdrant, Memgraph, Valkey and filesystem implementations in `handlers/adapters/` and `nodes/*/adapters/`
|
|
98
|
+
- **Runtime plugin** — `PluginMemory` in `src/omnimemory/runtime/`, registered as `onex.domain_plugins`
|
|
99
|
+
- **Memory-layer data services** — Qdrant, Memgraph, Valkey, Kreuzberg (owned via `docker-compose.yml`)
|
|
100
|
+
- **Node handlers** — contract-carrying nodes in `src/omnimemory/nodes/`, migrating to `omnimarket`
|
|
101
|
+
|
|
102
|
+
Not owned here: Kafka/Redpanda and PostgreSQL ([`omnibase_infra`](https://github.com/OmniNode-ai/omnibase_infra)), the ONEX kernel and contracts ([`omnibase_core`](https://github.com/OmniNode-ai/omnibase_core)), platform-boundary protocols ([`omnibase_spi`](https://github.com/OmniNode-ai/omnibase_spi)), the post-migration node runtime ([`omnimarket`](https://github.com/OmniNode-ai/omnimarket)), and dashboard read models ([`omnidash`](https://github.com/OmniNode-ai/omnidash)). See [Memory Data Ownership](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-memory-data-ownership.md) for the full boundary table, and [Market Migration Boundary](https://github.com/OmniNode-ai/knowledge-base/blob/main/guides/omnimemory-market-migration-boundary.md) for what is moving.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Quick Start
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git clone https://github.com/OmniNode-ai/omnimemory.git
|
|
110
|
+
cd omnimemory
|
|
111
|
+
|
|
112
|
+
# Start platform infra first (Kafka + PostgreSQL — owned by omnibase_infra)
|
|
113
|
+
infra-up
|
|
114
|
+
|
|
115
|
+
# Start the memory data services (Qdrant 6333, Memgraph 7687, Valkey 6379, Kreuzberg 8090)
|
|
116
|
+
docker compose up -d
|
|
117
|
+
docker compose ps
|
|
118
|
+
|
|
119
|
+
# Install and run the fast test suite
|
|
120
|
+
uv sync --group dev
|
|
121
|
+
uv run pytest tests/ -m unit
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Ports and every other setting are configurable — see [Environment Variables](https://github.com/OmniNode-ai/knowledge-base/blob/main/reference/omnimemory-environment-variables.md). The full startup runbook, with health checks and troubleshooting, is [Starting OmniMemory Services](https://github.com/OmniNode-ai/knowledge-base/blob/main/runbooks/omnimemory-starting-memory-services.md).
|
|
125
|
+
|
|
126
|
+
## Development
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
uv run ruff format src/ tests/ && uv run ruff check --fix src/ tests/
|
|
130
|
+
uv run mypy src/omnimemory/ --strict
|
|
131
|
+
uv run pytest tests/ -v
|
|
132
|
+
pre-commit run --all-files
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Repo invariants, enforced conventions and the pre-commit/pre-push split are in [CLAUDE.md](CLAUDE.md).
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Security, Contributing, and License
|
|
140
|
+
|
|
141
|
+
- [SECURITY.md](SECURITY.md)
|
|
142
|
+
- [CONTRIBUTING.md](.github/CONTRIBUTING.md)
|
|
143
|
+
- [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md)
|
|
144
|
+
- [LICENSE](LICENSE)
|
|
145
|
+
|
|
146
|
+
Open an issue or email <contact@omninode.ai>.
|