hermes-plugin-qdrant-memory 0.5.2__tar.gz → 0.5.3__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.
- {hermes_plugin_qdrant_memory-0.5.2/hermes_plugin_qdrant_memory.egg-info → hermes_plugin_qdrant_memory-0.5.3}/PKG-INFO +18 -13
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/README.md +17 -12
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/docs/local-embedding.md +3 -3
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3/hermes_plugin_qdrant_memory.egg-info}/PKG-INFO +18 -13
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/hermes_plugin_qdrant_memory.egg-info/SOURCES.txt +6 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/pyproject.toml +1 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/ledger.py +51 -44
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/native_owner.py +2 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/plugin.yaml +1 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/provider.py +593 -103
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_service.py +11 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/version.py +1 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/scripts/demo.sh +1 -1
- hermes_plugin_qdrant_memory-0.5.3/tests/soak/test_harness.py +333 -0
- hermes_plugin_qdrant_memory-0.5.3/tests/soak/test_invariants.py +676 -0
- hermes_plugin_qdrant_memory-0.5.3/tests/soak/test_supervisor.py +167 -0
- hermes_plugin_qdrant_memory-0.5.3/tests/soak/test_workflow_gates.py +388 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_checkpoint_lifecycle.py +30 -0
- hermes_plugin_qdrant_memory-0.5.3/tests/test_cross_process_lifecycle_recovery.py +193 -0
- hermes_plugin_qdrant_memory-0.5.3/tests/test_initialization_failures.py +391 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_native_owner.py +14 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_provider.py +32 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_readme_release_contract.py +2 -2
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_remote_qdrant.py +94 -1
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_review_regressions.py +25 -9
- hermes_plugin_qdrant_memory-0.5.3/tests/test_shutdown_contract.py +354 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_writer_ownership.py +149 -1
- hermes_plugin_qdrant_memory-0.5.2/tests/test_shutdown_contract.py +0 -100
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/LICENSE +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/MANIFEST.in +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/hermes_plugin_qdrant_memory.egg-info/dependency_links.txt +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/hermes_plugin_qdrant_memory.egg-info/entry_points.txt +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/hermes_plugin_qdrant_memory.egg-info/requires.txt +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/hermes_plugin_qdrant_memory.egg-info/top_level.txt +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/__init__.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/cli.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/config.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/config_schema.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/dedupe.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/event_quarantine.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/extraction.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/inventory.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/local_embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/local_model.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/managed_setup.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/mcp_server.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/migration.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/models.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/owner_lifecycle.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/owner_llm.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/ownership.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/policy_admin.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/private_paths.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/progress.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/qdrant_store.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/quality_metrics.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/remote_client.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/remote_gateway.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/remote_protocol.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/reset.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/retry.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/runtime.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_client.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_protocol.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_reader.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_recall.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_security.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/shared_state.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/standalone.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/tools.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/requirements-local.txt +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/requirements.txt +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/setup.cfg +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/__init__.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/conftest.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/helpers.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/local_model/test_acceptance.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/remote/fixture.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/security/__init__.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/security/test_cloud_owner.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/security/test_cloud_owner_cleanup.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/security/test_device_server.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/security/test_shared_security.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/security/test_shared_security_live.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/__init__.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_admission_control.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_device_grants.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_event_quarantine.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_event_quarantine_security.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_explicit_writes.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_managed_setup.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_owner_context.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_owner_diagnostics.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_owner_events.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_owner_lifecycle.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_owner_llm.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_policy_admin.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_public_api.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_remote_client.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_remote_gateway.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_remote_listener.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_remote_listener_options.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_remote_retry_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_remote_service.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_reset_receipts.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_shared_contracts.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_shared_evaluation.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_shared_reader.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_shared_response.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_shared_service.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_shared_visibility.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/standalone/test_standalone.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_backend_contracts.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_bot_scope.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_bounded_recovery.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_ci_gate.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_ci_infrastructure_retry.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_cli_output.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_config_embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_deletion_ordering.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_dependency_inputs.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_dependency_security.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_discovery_cli.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_explicit_dedupe.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_fastembed_compat.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_host_lifecycle.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_host_pins.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_input_validation.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_inventory_export.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_live_metrics.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_local_embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_local_embedding_provider.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_local_model.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_maintenance.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_manifest_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_migration.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_migration_endpoints.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_migration_progress.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_migration_resume.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_migration_superseded.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_model_smoke.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_native_unadmitted.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_openrouter_http.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_openrouter_models.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_openrouter_preflight.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_openrouter_runner.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_openrouter_workflow.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_pi_quality_driver.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_profile_scope.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_quality_dependencies.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_quality_metrics.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_quality_mutations.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_quality_ollama_setup.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_quality_profiles.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_quality_runner.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_recovery_benchmark.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_recovery_evaluation.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_remote_shutdown.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_reset_inspection.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_reset_recovery.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_restart_boundary.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_retention.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_session_provenance.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_setup_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_shared_recall.py +0 -0
- {hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/tests/test_store_runtime.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-plugin-qdrant-memory
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.3
|
|
4
4
|
Summary: Durable Qdrant memory for Hermes, standalone CLI and local MCP
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/cnkang/hermes-plugin-qdrant-memory
|
|
@@ -38,7 +38,7 @@ Skills—with explicit access control, conflict-safe updates, and crash recovery
|
|
|
38
38
|
Shared deployment hardening in this checkout is documented in the
|
|
39
39
|
[protected destination guide](docs/shared-memory/deployment-security.md) and
|
|
40
40
|
[versioned threat model](docs/shared-memory/threat-model-v1.md). These additions
|
|
41
|
-
are included in Runtime 0.5.
|
|
41
|
+
are included in Runtime 0.5.3. Remote access needs the `[remote]` extra.
|
|
42
42
|
|
|
43
43
|
## One Memory, Multiple Agents — opt-in shared owner
|
|
44
44
|
|
|
@@ -51,19 +51,21 @@ Runtime 0.5.0 adds an opt-in authenticated local shared owner and stdio bridge.
|
|
|
51
51
|
[](https://www.python.org/downloads/)
|
|
52
52
|
[](LICENSE)
|
|
53
53
|
|
|
54
|
-
> **Runtime 0.5.
|
|
54
|
+
> **Runtime 0.5.3** keeps the opt-in authenticated local shared owner and the stdio
|
|
55
55
|
> bridge for explicit shared memory. It keeps the optional offline CPU embedding,
|
|
56
56
|
> trusted setup and MCP Python SDK 1.x/2.x support from 0.3.0.
|
|
57
57
|
> Explicit writes retain canonical-text deduplication without an LLM.
|
|
58
58
|
> This patch makes a restart-interrupted write replayable with the same request
|
|
59
|
-
> identifier.
|
|
60
|
-
>
|
|
61
|
-
>
|
|
59
|
+
> identifier. This patch fixes partially initialized providers after startup failures,
|
|
60
|
+
> protects required checkpoints, and preserves WriterLease ownership through cleanup.
|
|
61
|
+
> It changes no schema or collection identity. This guide selects Runtime 0.5.3.
|
|
62
|
+
> Check its availability on
|
|
63
|
+
> [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.5.3/) before installation.
|
|
62
64
|
> The generic MCP distribution and managed launcher select their own exact Runtime
|
|
63
65
|
> dependency and are released independently.
|
|
64
66
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
65
67
|
> does not upgrade it. One writer per destination remains required.
|
|
66
|
-
> See [release notes](docs/releases/0.5.
|
|
68
|
+
> See [release notes](docs/releases/0.5.3.md) and [validation](docs/validation.md).
|
|
67
69
|
|
|
68
70
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
69
71
|
|
|
@@ -81,7 +83,7 @@ as a community-maintained plugin.
|
|
|
81
83
|
## How it works
|
|
82
84
|
|
|
83
85
|
For non-Hermes users, install in a private Python 3.11+
|
|
84
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.5.
|
|
86
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.5.3'` (omit `[mcp]`
|
|
85
87
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
86
88
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
87
89
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -185,7 +187,7 @@ Choose the **active profile's** home explicitly. Do not reuse another profile's
|
|
|
185
187
|
**Catalog option: install the version reviewed by the official Hermes Plugin Catalog.**
|
|
186
188
|
|
|
187
189
|
The Catalog selects its own fixed revision, which may be older than Runtime
|
|
188
|
-
0.5.
|
|
190
|
+
0.5.3. To use the current release, including opt-in shared memory, follow the
|
|
189
191
|
recommended version-locked installation below.
|
|
190
192
|
|
|
191
193
|
```bash
|
|
@@ -203,7 +205,7 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
203
205
|
tools, requirements and known issues before it clones anything.
|
|
204
206
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
205
207
|
|
|
206
|
-
**Recommended: install the version-locked Runtime 0.5.
|
|
208
|
+
**Recommended: install the version-locked Runtime 0.5.3 source through the Hermes CLI.**
|
|
207
209
|
|
|
208
210
|
This immutable source revision includes opt-in shared memory. It does not depend
|
|
209
211
|
on a PyPI release or a catalog update.
|
|
@@ -213,7 +215,7 @@ export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
|
213
215
|
ollama pull qwen3-embedding:4b
|
|
214
216
|
# Start Ollama if it is not running. Keep its service available.
|
|
215
217
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
216
|
-
--ref
|
|
218
|
+
--ref 0c83c2279ddd62f1aba98657aecc14a71a3dbf73 # Runtime 0.5.3 release
|
|
217
219
|
hermes plugins enable qdrant-memory
|
|
218
220
|
hermes memory setup
|
|
219
221
|
hermes config set memory.provider qdrant-memory
|
|
@@ -224,7 +226,7 @@ hermes qdrant-memory init
|
|
|
224
226
|
|
|
225
227
|
This older immutable source revision includes optional CPU embedding and guided
|
|
226
228
|
setup, but it predates opt-in shared memory. For the current release use
|
|
227
|
-
Runtime 0.5.
|
|
229
|
+
Runtime 0.5.3 above. It does not depend on a PyPI release or a catalog update.
|
|
228
230
|
|
|
229
231
|
```bash
|
|
230
232
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -248,7 +250,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
248
250
|
**Historical release: clone a published tag manually.**
|
|
249
251
|
|
|
250
252
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
251
|
-
fix. Use the pinned source above for Runtime 0.5.
|
|
253
|
+
fix. Use the pinned source above for Runtime 0.5.3.
|
|
252
254
|
|
|
253
255
|
```bash
|
|
254
256
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -566,6 +568,9 @@ Run Ruff lint and format checks before you commit. Install the repository
|
|
|
566
568
|
pre-commit hook as described in [development setup](docs/development.md). The hook
|
|
567
569
|
checks the staged snapshot. CI runs lint, both Python versions, Snyk and
|
|
568
570
|
SonarCloud. See [CI services](docs/ci.md) for the tested host versions and lanes.
|
|
571
|
+
The staged [soak system](docs/testing/soak.md) runs real Owner, Gateway, Ledger
|
|
572
|
+
and Qdrant windows on x64 and ARM64 runners, and admits a five-hour matrix only
|
|
573
|
+
after the short matrix passes.
|
|
569
574
|
|
|
570
575
|
Build isolated dependency environments with Hermes PM. Then run the host's
|
|
571
576
|
canonical test runner against this repository's tests. The tests import the real
|
|
@@ -11,7 +11,7 @@ Skills—with explicit access control, conflict-safe updates, and crash recovery
|
|
|
11
11
|
Shared deployment hardening in this checkout is documented in the
|
|
12
12
|
[protected destination guide](docs/shared-memory/deployment-security.md) and
|
|
13
13
|
[versioned threat model](docs/shared-memory/threat-model-v1.md). These additions
|
|
14
|
-
are included in Runtime 0.5.
|
|
14
|
+
are included in Runtime 0.5.3. Remote access needs the `[remote]` extra.
|
|
15
15
|
|
|
16
16
|
## One Memory, Multiple Agents — opt-in shared owner
|
|
17
17
|
|
|
@@ -24,19 +24,21 @@ Runtime 0.5.0 adds an opt-in authenticated local shared owner and stdio bridge.
|
|
|
24
24
|
[](https://www.python.org/downloads/)
|
|
25
25
|
[](LICENSE)
|
|
26
26
|
|
|
27
|
-
> **Runtime 0.5.
|
|
27
|
+
> **Runtime 0.5.3** keeps the opt-in authenticated local shared owner and the stdio
|
|
28
28
|
> bridge for explicit shared memory. It keeps the optional offline CPU embedding,
|
|
29
29
|
> trusted setup and MCP Python SDK 1.x/2.x support from 0.3.0.
|
|
30
30
|
> Explicit writes retain canonical-text deduplication without an LLM.
|
|
31
31
|
> This patch makes a restart-interrupted write replayable with the same request
|
|
32
|
-
> identifier.
|
|
33
|
-
>
|
|
34
|
-
>
|
|
32
|
+
> identifier. This patch fixes partially initialized providers after startup failures,
|
|
33
|
+
> protects required checkpoints, and preserves WriterLease ownership through cleanup.
|
|
34
|
+
> It changes no schema or collection identity. This guide selects Runtime 0.5.3.
|
|
35
|
+
> Check its availability on
|
|
36
|
+
> [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.5.3/) before installation.
|
|
35
37
|
> The generic MCP distribution and managed launcher select their own exact Runtime
|
|
36
38
|
> dependency and are released independently.
|
|
37
39
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
38
40
|
> does not upgrade it. One writer per destination remains required.
|
|
39
|
-
> See [release notes](docs/releases/0.5.
|
|
41
|
+
> See [release notes](docs/releases/0.5.3.md) and [validation](docs/validation.md).
|
|
40
42
|
|
|
41
43
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
42
44
|
|
|
@@ -54,7 +56,7 @@ as a community-maintained plugin.
|
|
|
54
56
|
## How it works
|
|
55
57
|
|
|
56
58
|
For non-Hermes users, install in a private Python 3.11+
|
|
57
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.5.
|
|
59
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.5.3'` (omit `[mcp]`
|
|
58
60
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
59
61
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
60
62
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -158,7 +160,7 @@ Choose the **active profile's** home explicitly. Do not reuse another profile's
|
|
|
158
160
|
**Catalog option: install the version reviewed by the official Hermes Plugin Catalog.**
|
|
159
161
|
|
|
160
162
|
The Catalog selects its own fixed revision, which may be older than Runtime
|
|
161
|
-
0.5.
|
|
163
|
+
0.5.3. To use the current release, including opt-in shared memory, follow the
|
|
162
164
|
recommended version-locked installation below.
|
|
163
165
|
|
|
164
166
|
```bash
|
|
@@ -176,7 +178,7 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
176
178
|
tools, requirements and known issues before it clones anything.
|
|
177
179
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
178
180
|
|
|
179
|
-
**Recommended: install the version-locked Runtime 0.5.
|
|
181
|
+
**Recommended: install the version-locked Runtime 0.5.3 source through the Hermes CLI.**
|
|
180
182
|
|
|
181
183
|
This immutable source revision includes opt-in shared memory. It does not depend
|
|
182
184
|
on a PyPI release or a catalog update.
|
|
@@ -186,7 +188,7 @@ export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
|
186
188
|
ollama pull qwen3-embedding:4b
|
|
187
189
|
# Start Ollama if it is not running. Keep its service available.
|
|
188
190
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
189
|
-
--ref
|
|
191
|
+
--ref 0c83c2279ddd62f1aba98657aecc14a71a3dbf73 # Runtime 0.5.3 release
|
|
190
192
|
hermes plugins enable qdrant-memory
|
|
191
193
|
hermes memory setup
|
|
192
194
|
hermes config set memory.provider qdrant-memory
|
|
@@ -197,7 +199,7 @@ hermes qdrant-memory init
|
|
|
197
199
|
|
|
198
200
|
This older immutable source revision includes optional CPU embedding and guided
|
|
199
201
|
setup, but it predates opt-in shared memory. For the current release use
|
|
200
|
-
Runtime 0.5.
|
|
202
|
+
Runtime 0.5.3 above. It does not depend on a PyPI release or a catalog update.
|
|
201
203
|
|
|
202
204
|
```bash
|
|
203
205
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -221,7 +223,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
221
223
|
**Historical release: clone a published tag manually.**
|
|
222
224
|
|
|
223
225
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
224
|
-
fix. Use the pinned source above for Runtime 0.5.
|
|
226
|
+
fix. Use the pinned source above for Runtime 0.5.3.
|
|
225
227
|
|
|
226
228
|
```bash
|
|
227
229
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -539,6 +541,9 @@ Run Ruff lint and format checks before you commit. Install the repository
|
|
|
539
541
|
pre-commit hook as described in [development setup](docs/development.md). The hook
|
|
540
542
|
checks the staged snapshot. CI runs lint, both Python versions, Snyk and
|
|
541
543
|
SonarCloud. See [CI services](docs/ci.md) for the tested host versions and lanes.
|
|
544
|
+
The staged [soak system](docs/testing/soak.md) runs real Owner, Gateway, Ledger
|
|
545
|
+
and Qdrant windows on x64 and ARM64 runners, and admits a five-hour matrix only
|
|
546
|
+
after the short matrix passes.
|
|
542
547
|
|
|
543
548
|
Build isolated dependency environments with Hermes PM. Then run the host's
|
|
544
549
|
canonical test runner against this repository's tests. The tests import the real
|
{hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/docs/local-embedding.md
RENAMED
|
@@ -35,11 +35,11 @@ python -m pip install '.[mcp,local]'
|
|
|
35
35
|
|
|
36
36
|
For a published package, install the same extras with the release version:
|
|
37
37
|
|
|
38
|
-
Check [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.5.
|
|
39
|
-
Runtime 0.5.
|
|
38
|
+
Check [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.5.3/) for
|
|
39
|
+
Runtime 0.5.3 availability before running this command.
|
|
40
40
|
|
|
41
41
|
```sh
|
|
42
|
-
python -m pip install 'hermes-plugin-qdrant-memory[mcp,local]==0.5.
|
|
42
|
+
python -m pip install 'hermes-plugin-qdrant-memory[mcp,local]==0.5.3'
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
Choose **one** setup command and replace the profile path with a new absolute
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-plugin-qdrant-memory
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.3
|
|
4
4
|
Summary: Durable Qdrant memory for Hermes, standalone CLI and local MCP
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/cnkang/hermes-plugin-qdrant-memory
|
|
@@ -38,7 +38,7 @@ Skills—with explicit access control, conflict-safe updates, and crash recovery
|
|
|
38
38
|
Shared deployment hardening in this checkout is documented in the
|
|
39
39
|
[protected destination guide](docs/shared-memory/deployment-security.md) and
|
|
40
40
|
[versioned threat model](docs/shared-memory/threat-model-v1.md). These additions
|
|
41
|
-
are included in Runtime 0.5.
|
|
41
|
+
are included in Runtime 0.5.3. Remote access needs the `[remote]` extra.
|
|
42
42
|
|
|
43
43
|
## One Memory, Multiple Agents — opt-in shared owner
|
|
44
44
|
|
|
@@ -51,19 +51,21 @@ Runtime 0.5.0 adds an opt-in authenticated local shared owner and stdio bridge.
|
|
|
51
51
|
[](https://www.python.org/downloads/)
|
|
52
52
|
[](LICENSE)
|
|
53
53
|
|
|
54
|
-
> **Runtime 0.5.
|
|
54
|
+
> **Runtime 0.5.3** keeps the opt-in authenticated local shared owner and the stdio
|
|
55
55
|
> bridge for explicit shared memory. It keeps the optional offline CPU embedding,
|
|
56
56
|
> trusted setup and MCP Python SDK 1.x/2.x support from 0.3.0.
|
|
57
57
|
> Explicit writes retain canonical-text deduplication without an LLM.
|
|
58
58
|
> This patch makes a restart-interrupted write replayable with the same request
|
|
59
|
-
> identifier.
|
|
60
|
-
>
|
|
61
|
-
>
|
|
59
|
+
> identifier. This patch fixes partially initialized providers after startup failures,
|
|
60
|
+
> protects required checkpoints, and preserves WriterLease ownership through cleanup.
|
|
61
|
+
> It changes no schema or collection identity. This guide selects Runtime 0.5.3.
|
|
62
|
+
> Check its availability on
|
|
63
|
+
> [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.5.3/) before installation.
|
|
62
64
|
> The generic MCP distribution and managed launcher select their own exact Runtime
|
|
63
65
|
> dependency and are released independently.
|
|
64
66
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
65
67
|
> does not upgrade it. One writer per destination remains required.
|
|
66
|
-
> See [release notes](docs/releases/0.5.
|
|
68
|
+
> See [release notes](docs/releases/0.5.3.md) and [validation](docs/validation.md).
|
|
67
69
|
|
|
68
70
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
69
71
|
|
|
@@ -81,7 +83,7 @@ as a community-maintained plugin.
|
|
|
81
83
|
## How it works
|
|
82
84
|
|
|
83
85
|
For non-Hermes users, install in a private Python 3.11+
|
|
84
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.5.
|
|
86
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.5.3'` (omit `[mcp]`
|
|
85
87
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
86
88
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
87
89
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -185,7 +187,7 @@ Choose the **active profile's** home explicitly. Do not reuse another profile's
|
|
|
185
187
|
**Catalog option: install the version reviewed by the official Hermes Plugin Catalog.**
|
|
186
188
|
|
|
187
189
|
The Catalog selects its own fixed revision, which may be older than Runtime
|
|
188
|
-
0.5.
|
|
190
|
+
0.5.3. To use the current release, including opt-in shared memory, follow the
|
|
189
191
|
recommended version-locked installation below.
|
|
190
192
|
|
|
191
193
|
```bash
|
|
@@ -203,7 +205,7 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
203
205
|
tools, requirements and known issues before it clones anything.
|
|
204
206
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
205
207
|
|
|
206
|
-
**Recommended: install the version-locked Runtime 0.5.
|
|
208
|
+
**Recommended: install the version-locked Runtime 0.5.3 source through the Hermes CLI.**
|
|
207
209
|
|
|
208
210
|
This immutable source revision includes opt-in shared memory. It does not depend
|
|
209
211
|
on a PyPI release or a catalog update.
|
|
@@ -213,7 +215,7 @@ export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
|
213
215
|
ollama pull qwen3-embedding:4b
|
|
214
216
|
# Start Ollama if it is not running. Keep its service available.
|
|
215
217
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
216
|
-
--ref
|
|
218
|
+
--ref 0c83c2279ddd62f1aba98657aecc14a71a3dbf73 # Runtime 0.5.3 release
|
|
217
219
|
hermes plugins enable qdrant-memory
|
|
218
220
|
hermes memory setup
|
|
219
221
|
hermes config set memory.provider qdrant-memory
|
|
@@ -224,7 +226,7 @@ hermes qdrant-memory init
|
|
|
224
226
|
|
|
225
227
|
This older immutable source revision includes optional CPU embedding and guided
|
|
226
228
|
setup, but it predates opt-in shared memory. For the current release use
|
|
227
|
-
Runtime 0.5.
|
|
229
|
+
Runtime 0.5.3 above. It does not depend on a PyPI release or a catalog update.
|
|
228
230
|
|
|
229
231
|
```bash
|
|
230
232
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -248,7 +250,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
248
250
|
**Historical release: clone a published tag manually.**
|
|
249
251
|
|
|
250
252
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
251
|
-
fix. Use the pinned source above for Runtime 0.5.
|
|
253
|
+
fix. Use the pinned source above for Runtime 0.5.3.
|
|
252
254
|
|
|
253
255
|
```bash
|
|
254
256
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -566,6 +568,9 @@ Run Ruff lint and format checks before you commit. Install the repository
|
|
|
566
568
|
pre-commit hook as described in [development setup](docs/development.md). The hook
|
|
567
569
|
checks the staged snapshot. CI runs lint, both Python versions, Snyk and
|
|
568
570
|
SonarCloud. See [CI services](docs/ci.md) for the tested host versions and lanes.
|
|
571
|
+
The staged [soak system](docs/testing/soak.md) runs real Owner, Gateway, Ledger
|
|
572
|
+
and Qdrant windows on x64 and ARM64 runners, and admits a five-hour matrix only
|
|
573
|
+
after the short matrix passes.
|
|
569
574
|
|
|
570
575
|
Build isolated dependency environments with Hermes PM. Then run the host's
|
|
571
576
|
canonical test runner against this repository's tests. The tests import the real
|
|
@@ -66,6 +66,7 @@ tests/test_ci_gate.py
|
|
|
66
66
|
tests/test_ci_infrastructure_retry.py
|
|
67
67
|
tests/test_cli_output.py
|
|
68
68
|
tests/test_config_embedding.py
|
|
69
|
+
tests/test_cross_process_lifecycle_recovery.py
|
|
69
70
|
tests/test_deletion_ordering.py
|
|
70
71
|
tests/test_dependency_inputs.py
|
|
71
72
|
tests/test_dependency_security.py
|
|
@@ -74,6 +75,7 @@ tests/test_explicit_dedupe.py
|
|
|
74
75
|
tests/test_fastembed_compat.py
|
|
75
76
|
tests/test_host_lifecycle.py
|
|
76
77
|
tests/test_host_pins.py
|
|
78
|
+
tests/test_initialization_failures.py
|
|
77
79
|
tests/test_input_validation.py
|
|
78
80
|
tests/test_inventory_export.py
|
|
79
81
|
tests/test_live_metrics.py
|
|
@@ -128,6 +130,10 @@ tests/security/test_cloud_owner_cleanup.py
|
|
|
128
130
|
tests/security/test_device_server.py
|
|
129
131
|
tests/security/test_shared_security.py
|
|
130
132
|
tests/security/test_shared_security_live.py
|
|
133
|
+
tests/soak/test_harness.py
|
|
134
|
+
tests/soak/test_invariants.py
|
|
135
|
+
tests/soak/test_supervisor.py
|
|
136
|
+
tests/soak/test_workflow_gates.py
|
|
131
137
|
tests/standalone/__init__.py
|
|
132
138
|
tests/standalone/test_admission_control.py
|
|
133
139
|
tests/standalone/test_device_grants.py
|
{hermes_plugin_qdrant_memory-0.5.2 → hermes_plugin_qdrant_memory-0.5.3}/qdrant_memory/ledger.py
RENAMED
|
@@ -31,50 +31,57 @@ class Ledger:
|
|
|
31
31
|
path.chmod(0o600)
|
|
32
32
|
self.lock = RLock()
|
|
33
33
|
self.db = sqlite3.connect(path, check_same_thread=False, timeout=30)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
self.
|
|
34
|
+
try:
|
|
35
|
+
self.db.row_factory = sqlite3.Row
|
|
36
|
+
self.db.execute("PRAGMA journal_mode=WAL")
|
|
37
|
+
self.db.execute("PRAGMA synchronous=FULL")
|
|
38
|
+
self.db.executescript("""
|
|
39
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
40
|
+
event_id TEXT PRIMARY KEY, session_id TEXT, payload_json TEXT NOT NULL,
|
|
41
|
+
status TEXT NOT NULL DEFAULT 'PENDING', attempts INTEGER NOT NULL DEFAULT 0,
|
|
42
|
+
last_error TEXT, created_at TEXT, committed_at TEXT, collection TEXT NOT NULL);
|
|
43
|
+
CREATE TABLE IF NOT EXISTS operations (
|
|
44
|
+
idempotency_key TEXT PRIMARY KEY, point_id TEXT NOT NULL, action TEXT NOT NULL,
|
|
45
|
+
payload_json TEXT NOT NULL, source_id TEXT, source_version TEXT, content_hash TEXT,
|
|
46
|
+
status TEXT NOT NULL DEFAULT 'PENDING', attempts INTEGER NOT NULL DEFAULT 0,
|
|
47
|
+
last_error TEXT, created_at TEXT, committed_at TEXT, collection TEXT NOT NULL);
|
|
48
|
+
CREATE INDEX IF NOT EXISTS events_by_collection_status
|
|
49
|
+
ON events(collection,status);
|
|
50
|
+
CREATE INDEX IF NOT EXISTS operations_by_collection_status
|
|
51
|
+
ON operations(collection,status);
|
|
52
|
+
CREATE INDEX IF NOT EXISTS operations_by_point_status
|
|
53
|
+
ON operations(collection,point_id,status);
|
|
54
|
+
CREATE INDEX IF NOT EXISTS operations_delete_by_point
|
|
55
|
+
ON operations(collection,source_id,action,point_id);
|
|
56
|
+
CREATE INDEX IF NOT EXISTS operations_delete_by_hash
|
|
57
|
+
ON operations(collection,source_id,action,content_hash);
|
|
58
|
+
CREATE INDEX IF NOT EXISTS operations_unscrubbed_by_collection
|
|
59
|
+
ON operations(collection)
|
|
60
|
+
WHERE status IN ('COMMITTED','SUPERSEDED') AND payload_json!='{}';
|
|
61
|
+
CREATE INDEX IF NOT EXISTS operations_unscrubbed_by_point
|
|
62
|
+
ON operations(collection,point_id)
|
|
63
|
+
WHERE status IN ('COMMITTED','SUPERSEDED') AND payload_json!='{}';
|
|
64
|
+
CREATE TABLE IF NOT EXISTS manifests (
|
|
65
|
+
migration_id TEXT PRIMARY KEY, payload_json TEXT NOT NULL, collection TEXT NOT NULL);
|
|
66
|
+
CREATE TABLE IF NOT EXISTS metrics (name TEXT, value REAL, collection TEXT);
|
|
67
|
+
CREATE TABLE IF NOT EXISTS counters (
|
|
68
|
+
name TEXT, value INTEGER, collection TEXT, PRIMARY KEY(name,collection));
|
|
69
|
+
CREATE TABLE IF NOT EXISTS unattributed_sessions (
|
|
70
|
+
session_id TEXT, collection TEXT, PRIMARY KEY(session_id,collection));
|
|
71
|
+
CREATE TABLE IF NOT EXISTS session_provenance (
|
|
72
|
+
session_id TEXT, collection TEXT, authors_json TEXT NOT NULL,
|
|
73
|
+
explicit_author INTEGER NOT NULL, history_known INTEGER NOT NULL,
|
|
74
|
+
PRIMARY KEY(session_id,collection));
|
|
75
|
+
""")
|
|
76
|
+
self._resumable_operation_keys = self._load_resumable_operation_keys()
|
|
77
|
+
with self.lock, self.db:
|
|
78
|
+
self._scrub_terminal_payloads()
|
|
79
|
+
except BaseException as exc:
|
|
80
|
+
try:
|
|
81
|
+
self.db.close()
|
|
82
|
+
except Exception as cleanup_exc:
|
|
83
|
+
exc.add_note(f"SQLite ledger cleanup failed ({type(cleanup_exc).__name__})")
|
|
84
|
+
raise
|
|
78
85
|
|
|
79
86
|
def clear_destination(self):
|
|
80
87
|
"""Forget every destination-scoped replay record so cleared memories cannot replay.
|
|
@@ -66,7 +66,7 @@ def load_native_settings(home, value):
|
|
|
66
66
|
class NativeOwner:
|
|
67
67
|
"""Share one host-owned Runtime; never acquire a second store, lease or Ledger."""
|
|
68
68
|
|
|
69
|
-
def __init__(self, runtime, settings, user_id):
|
|
69
|
+
def __init__(self, runtime, settings, user_id, *, ready_check=None):
|
|
70
70
|
"""Recover requests and resolve the explicitly selected Native private grant."""
|
|
71
71
|
from contextvars import copy_context
|
|
72
72
|
|
|
@@ -84,6 +84,7 @@ class NativeOwner:
|
|
|
84
84
|
grant_loader=lambda: load_policy(settings["policy"]),
|
|
85
85
|
admission_check=admission if binding is not None else None,
|
|
86
86
|
execution_context=copy_context(),
|
|
87
|
+
ready_check=ready_check,
|
|
87
88
|
)
|
|
88
89
|
grant = self.owner.authenticate(secret(settings["private_token_env"]))
|
|
89
90
|
if (
|