hermes-plugin-qdrant-memory 0.2.1__tar.gz → 0.2.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.
- {hermes_plugin_qdrant_memory-0.2.1/hermes_plugin_qdrant_memory.egg-info → hermes_plugin_qdrant_memory-0.2.2}/PKG-INFO +12 -10
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/README.md +10 -8
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2/hermes_plugin_qdrant_memory.egg-info}/PKG-INFO +12 -10
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/hermes_plugin_qdrant_memory.egg-info/requires.txt +1 -1
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/pyproject.toml +3 -3
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/mcp_server.py +19 -6
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/plugin.yaml +1 -1
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/version.py +1 -1
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_ci_gate.py +8 -5
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/LICENSE +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/MANIFEST.in +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/hermes_plugin_qdrant_memory.egg-info/SOURCES.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/hermes_plugin_qdrant_memory.egg-info/dependency_links.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/hermes_plugin_qdrant_memory.egg-info/entry_points.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/hermes_plugin_qdrant_memory.egg-info/top_level.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/__init__.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/cli.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/config.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/config_schema.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/dedupe.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/extraction.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/inventory.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/ledger.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/migration.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/models.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/ownership.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/progress.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/provider.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/qdrant_store.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/reset.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/retry.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/runtime.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/standalone.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/tools.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/scripts/demo.sh +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/setup.cfg +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_backend_contracts.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_bot_scope.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_bounded_recovery.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_checkpoint_lifecycle.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_cli_output.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_config_embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_deletion_ordering.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_discovery_cli.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_explicit_dedupe.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_host_lifecycle.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_input_validation.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_inventory_export.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_live_metrics.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_maintenance.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_manifest_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_migration.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_migration_endpoints.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_migration_progress.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_migration_resume.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_migration_superseded.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_profile_scope.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_provider.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_recovery_benchmark.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_recovery_evaluation.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_remote_qdrant.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_reset_recovery.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_retention.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_review_regressions.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_session_provenance.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_setup_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_shutdown_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_store_runtime.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_writer_ownership.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-plugin-qdrant-memory
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
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
|
|
@@ -16,7 +16,7 @@ Requires-Dist: qdrant-client<2,>=1.15
|
|
|
16
16
|
Requires-Dist: httpx<1,>=0.28
|
|
17
17
|
Requires-Dist: portalocker<4,>=3.2
|
|
18
18
|
Provides-Extra: mcp
|
|
19
|
-
Requires-Dist: mcp<
|
|
19
|
+
Requires-Dist: mcp<3,>=1.30; extra == "mcp"
|
|
20
20
|
Dynamic: license-file
|
|
21
21
|
|
|
22
22
|
# Qdrant Memory for Hermes
|
|
@@ -28,11 +28,12 @@ Dynamic: license-file
|
|
|
28
28
|
[](https://www.python.org/downloads/)
|
|
29
29
|
[](LICENSE)
|
|
30
30
|
|
|
31
|
-
> **Runtime 0.2.
|
|
32
|
-
>
|
|
31
|
+
> **Runtime 0.2.2** supports MCP Python SDK 1.x and 2.x for the standalone
|
|
32
|
+
> CLI/MCP. MCP distribution 0.1.2 pins Runtime 0.2.2. Explicit writes retain
|
|
33
|
+
> canonical-text deduplication without an LLM.
|
|
33
34
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
34
35
|
> does not upgrade it. One writer per destination remains required.
|
|
35
|
-
> See [release notes](docs/releases/0.2.
|
|
36
|
+
> See [release notes](docs/releases/0.2.2.md) and [validation](docs/validation.md).
|
|
36
37
|
|
|
37
38
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
38
39
|
|
|
@@ -47,7 +48,7 @@ as a community-maintained plugin.
|
|
|
47
48
|
## How it works
|
|
48
49
|
|
|
49
50
|
For non-Hermes users, install in a private Python 3.11+
|
|
50
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.2.
|
|
51
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.2.2'` (omit `[mcp]`
|
|
51
52
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
52
53
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
53
54
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -140,9 +141,10 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
140
141
|
tools, requirements and known issues before it clones anything.
|
|
141
142
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
142
143
|
|
|
143
|
-
**Version-locked: install the verified Runtime 0.2.
|
|
144
|
+
**Version-locked: install the verified Runtime 0.2.2 source through the Hermes CLI.**
|
|
144
145
|
|
|
145
|
-
This immutable source revision includes
|
|
146
|
+
This immutable source revision includes MCP SDK 1.x/2.x support and the
|
|
147
|
+
explicit-write fix. It does not
|
|
146
148
|
depend on a PyPI release or a catalog update.
|
|
147
149
|
|
|
148
150
|
```bash
|
|
@@ -150,7 +152,7 @@ export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
|
150
152
|
ollama pull qwen3-embedding:4b
|
|
151
153
|
# Start Ollama if it is not running. Keep its service available.
|
|
152
154
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
153
|
-
--ref
|
|
155
|
+
--ref 2fd43ad2259bd98d039394b8b714e5e89b5ab3a8 # verified Runtime 0.2.2 source
|
|
154
156
|
hermes plugins enable qdrant-memory
|
|
155
157
|
hermes memory setup
|
|
156
158
|
hermes config set memory.provider qdrant-memory
|
|
@@ -167,7 +169,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
167
169
|
**Historical release: clone a published tag manually.**
|
|
168
170
|
|
|
169
171
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
170
|
-
fix. Use the pinned source above for Runtime 0.2.
|
|
172
|
+
fix. Use the pinned source above for Runtime 0.2.2.
|
|
171
173
|
|
|
172
174
|
```bash
|
|
173
175
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
[](https://www.python.org/downloads/)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
|
-
> **Runtime 0.2.
|
|
11
|
-
>
|
|
10
|
+
> **Runtime 0.2.2** supports MCP Python SDK 1.x and 2.x for the standalone
|
|
11
|
+
> CLI/MCP. MCP distribution 0.1.2 pins Runtime 0.2.2. Explicit writes retain
|
|
12
|
+
> canonical-text deduplication without an LLM.
|
|
12
13
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
13
14
|
> does not upgrade it. One writer per destination remains required.
|
|
14
|
-
> See [release notes](docs/releases/0.2.
|
|
15
|
+
> See [release notes](docs/releases/0.2.2.md) and [validation](docs/validation.md).
|
|
15
16
|
|
|
16
17
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
17
18
|
|
|
@@ -26,7 +27,7 @@ as a community-maintained plugin.
|
|
|
26
27
|
## How it works
|
|
27
28
|
|
|
28
29
|
For non-Hermes users, install in a private Python 3.11+
|
|
29
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.2.
|
|
30
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.2.2'` (omit `[mcp]`
|
|
30
31
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
31
32
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
32
33
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -119,9 +120,10 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
119
120
|
tools, requirements and known issues before it clones anything.
|
|
120
121
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
121
122
|
|
|
122
|
-
**Version-locked: install the verified Runtime 0.2.
|
|
123
|
+
**Version-locked: install the verified Runtime 0.2.2 source through the Hermes CLI.**
|
|
123
124
|
|
|
124
|
-
This immutable source revision includes
|
|
125
|
+
This immutable source revision includes MCP SDK 1.x/2.x support and the
|
|
126
|
+
explicit-write fix. It does not
|
|
125
127
|
depend on a PyPI release or a catalog update.
|
|
126
128
|
|
|
127
129
|
```bash
|
|
@@ -129,7 +131,7 @@ export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
|
129
131
|
ollama pull qwen3-embedding:4b
|
|
130
132
|
# Start Ollama if it is not running. Keep its service available.
|
|
131
133
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
132
|
-
--ref
|
|
134
|
+
--ref 2fd43ad2259bd98d039394b8b714e5e89b5ab3a8 # verified Runtime 0.2.2 source
|
|
133
135
|
hermes plugins enable qdrant-memory
|
|
134
136
|
hermes memory setup
|
|
135
137
|
hermes config set memory.provider qdrant-memory
|
|
@@ -146,7 +148,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
146
148
|
**Historical release: clone a published tag manually.**
|
|
147
149
|
|
|
148
150
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
149
|
-
fix. Use the pinned source above for Runtime 0.2.
|
|
151
|
+
fix. Use the pinned source above for Runtime 0.2.2.
|
|
150
152
|
|
|
151
153
|
```bash
|
|
152
154
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-plugin-qdrant-memory
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
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
|
|
@@ -16,7 +16,7 @@ Requires-Dist: qdrant-client<2,>=1.15
|
|
|
16
16
|
Requires-Dist: httpx<1,>=0.28
|
|
17
17
|
Requires-Dist: portalocker<4,>=3.2
|
|
18
18
|
Provides-Extra: mcp
|
|
19
|
-
Requires-Dist: mcp<
|
|
19
|
+
Requires-Dist: mcp<3,>=1.30; extra == "mcp"
|
|
20
20
|
Dynamic: license-file
|
|
21
21
|
|
|
22
22
|
# Qdrant Memory for Hermes
|
|
@@ -28,11 +28,12 @@ Dynamic: license-file
|
|
|
28
28
|
[](https://www.python.org/downloads/)
|
|
29
29
|
[](LICENSE)
|
|
30
30
|
|
|
31
|
-
> **Runtime 0.2.
|
|
32
|
-
>
|
|
31
|
+
> **Runtime 0.2.2** supports MCP Python SDK 1.x and 2.x for the standalone
|
|
32
|
+
> CLI/MCP. MCP distribution 0.1.2 pins Runtime 0.2.2. Explicit writes retain
|
|
33
|
+
> canonical-text deduplication without an LLM.
|
|
33
34
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
34
35
|
> does not upgrade it. One writer per destination remains required.
|
|
35
|
-
> See [release notes](docs/releases/0.2.
|
|
36
|
+
> See [release notes](docs/releases/0.2.2.md) and [validation](docs/validation.md).
|
|
36
37
|
|
|
37
38
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
38
39
|
|
|
@@ -47,7 +48,7 @@ as a community-maintained plugin.
|
|
|
47
48
|
## How it works
|
|
48
49
|
|
|
49
50
|
For non-Hermes users, install in a private Python 3.11+
|
|
50
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.2.
|
|
51
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.2.2'` (omit `[mcp]`
|
|
51
52
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
52
53
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
53
54
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -140,9 +141,10 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
140
141
|
tools, requirements and known issues before it clones anything.
|
|
141
142
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
142
143
|
|
|
143
|
-
**Version-locked: install the verified Runtime 0.2.
|
|
144
|
+
**Version-locked: install the verified Runtime 0.2.2 source through the Hermes CLI.**
|
|
144
145
|
|
|
145
|
-
This immutable source revision includes
|
|
146
|
+
This immutable source revision includes MCP SDK 1.x/2.x support and the
|
|
147
|
+
explicit-write fix. It does not
|
|
146
148
|
depend on a PyPI release or a catalog update.
|
|
147
149
|
|
|
148
150
|
```bash
|
|
@@ -150,7 +152,7 @@ export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
|
150
152
|
ollama pull qwen3-embedding:4b
|
|
151
153
|
# Start Ollama if it is not running. Keep its service available.
|
|
152
154
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
153
|
-
--ref
|
|
155
|
+
--ref 2fd43ad2259bd98d039394b8b714e5e89b5ab3a8 # verified Runtime 0.2.2 source
|
|
154
156
|
hermes plugins enable qdrant-memory
|
|
155
157
|
hermes memory setup
|
|
156
158
|
hermes config set memory.provider qdrant-memory
|
|
@@ -167,7 +169,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
167
169
|
**Historical release: clone a published tag manually.**
|
|
168
170
|
|
|
169
171
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
170
|
-
fix. Use the pinned source above for Runtime 0.2.
|
|
172
|
+
fix. Use the pinned source above for Runtime 0.2.2.
|
|
171
173
|
|
|
172
174
|
```bash
|
|
173
175
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hermes-plugin-qdrant-memory"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.2"
|
|
8
8
|
description = "Durable Qdrant memory for Hermes, standalone CLI and local MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -16,7 +16,7 @@ dependencies = ["qdrant-client>=1.15,<2", "httpx>=0.28,<1", "portalocker>=3.2,<4
|
|
|
16
16
|
qdrant-memory = "qdrant_memory.standalone:main"
|
|
17
17
|
|
|
18
18
|
[project.optional-dependencies]
|
|
19
|
-
mcp = ["mcp>=1.30,<
|
|
19
|
+
mcp = ["mcp>=1.30,<3"]
|
|
20
20
|
|
|
21
21
|
[project.urls]
|
|
22
22
|
Homepage = "https://github.com/cnkang/hermes-plugin-qdrant-memory"
|
|
@@ -30,7 +30,7 @@ Skill = "https://github.com/cnkang/skills/tree/main/qdrant-memory"
|
|
|
30
30
|
qdrant-memory = "qdrant_memory:register"
|
|
31
31
|
|
|
32
32
|
[dependency-groups]
|
|
33
|
-
test = ["pytest>=8,<10", "pytest-cov>=6,<8", "ruamel.yaml>=0.18.16,<0.20", "mcp>=1.30,<
|
|
33
|
+
test = ["pytest>=8,<10", "pytest-cov>=6,<8", "ruamel.yaml>=0.18.16,<0.20", "mcp>=1.30,<3"]
|
|
34
34
|
|
|
35
35
|
[tool.setuptools.packages.find]
|
|
36
36
|
include = ["qdrant_memory*"]
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/mcp_server.py
RENAMED
|
@@ -11,19 +11,17 @@ def create_server(runtime):
|
|
|
11
11
|
"""Bind the four fixed-scope tools to an official SDK server instance."""
|
|
12
12
|
import anyio
|
|
13
13
|
from mcp.server import Server
|
|
14
|
-
from mcp.types import CallToolResult, TextContent, Tool
|
|
14
|
+
from mcp.types import CallToolResult, ListToolsResult, TextContent, Tool
|
|
15
15
|
|
|
16
|
-
server = Server("qdrant-memory")
|
|
17
|
-
|
|
18
|
-
@server.list_tools()
|
|
19
16
|
async def list_tools():
|
|
20
17
|
"""Advertise only the shared explicit-memory schemas."""
|
|
18
|
+
# Both SDKs require an async handler; allow cancellation before building schemas.
|
|
19
|
+
await anyio.lowlevel.checkpoint()
|
|
21
20
|
return [
|
|
22
21
|
Tool(name=item["name"], description=item["description"], inputSchema=item["parameters"])
|
|
23
22
|
for item in schemas()
|
|
24
23
|
]
|
|
25
24
|
|
|
26
|
-
@server.call_tool(validate_input=False)
|
|
27
25
|
async def invoke(name, arguments):
|
|
28
26
|
"""Validate and dispatch without echoing sensitive invalid arguments."""
|
|
29
27
|
try:
|
|
@@ -38,7 +36,22 @@ def create_server(runtime):
|
|
|
38
36
|
isError=True,
|
|
39
37
|
)
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
if hasattr(Server, "list_tools"):
|
|
40
|
+
# SDK 1.x registers handlers with decorators.
|
|
41
|
+
server = Server("qdrant-memory")
|
|
42
|
+
server.list_tools()(list_tools)
|
|
43
|
+
server.call_tool(validate_input=False)(invoke)
|
|
44
|
+
return server
|
|
45
|
+
|
|
46
|
+
async def on_list_tools(context, params):
|
|
47
|
+
"""Adapt SDK 2.x request handlers to the shared tool catalogue."""
|
|
48
|
+
return ListToolsResult(tools=await list_tools())
|
|
49
|
+
|
|
50
|
+
async def on_call_tool(context, params):
|
|
51
|
+
"""Keep validation and sanitized tool errors identical across SDK versions."""
|
|
52
|
+
return await invoke(params.name, params.arguments)
|
|
53
|
+
|
|
54
|
+
return Server("qdrant-memory", on_list_tools=on_list_tools, on_call_tool=on_call_tool)
|
|
42
55
|
|
|
43
56
|
|
|
44
57
|
def serve(home):
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_ci_gate.py
RENAMED
|
@@ -7,16 +7,18 @@ from pathlib import Path
|
|
|
7
7
|
import pytest
|
|
8
8
|
from ruamel.yaml import YAML
|
|
9
9
|
|
|
10
|
-
CASES = [("success", "success", "success", "success", "success", 0)] + [
|
|
11
|
-
tuple(result if position == failed else "success" for position in range(
|
|
12
|
-
for failed in range(
|
|
10
|
+
CASES = [("success", "success", "success", "success", "success", "success", 0)] + [
|
|
11
|
+
tuple(result if position == failed else "success" for position in range(6)) + (1,)
|
|
12
|
+
for failed in range(6)
|
|
13
13
|
for result in ("failure", "skipped", "cancelled")
|
|
14
14
|
]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
@pytest.mark.parametrize("lint,tests,sonar,snyk,snyk_code,expected", CASES)
|
|
17
|
+
@pytest.mark.parametrize("lint,tests,mcp,sonar,snyk,snyk_code,expected", CASES)
|
|
18
18
|
@pytest.mark.skipif(os.name == "nt", reason="The checked workflow step is POSIX Bash.")
|
|
19
|
-
def test_required_gate_executes_actual_workflow_step(
|
|
19
|
+
def test_required_gate_executes_actual_workflow_step(
|
|
20
|
+
lint, tests, mcp, sonar, snyk, snyk_code, expected
|
|
21
|
+
):
|
|
20
22
|
"""Verify required gate executes actual workflow step."""
|
|
21
23
|
workflow = (Path(__file__).resolve().parents[1] / ".github/workflows/ci.yml").read_text(
|
|
22
24
|
encoding="utf-8"
|
|
@@ -28,6 +30,7 @@ def test_required_gate_executes_actual_workflow_step(lint, tests, sonar, snyk, s
|
|
|
28
30
|
**os.environ,
|
|
29
31
|
"LINT_RESULT": lint,
|
|
30
32
|
"TEST_RESULT": tests,
|
|
33
|
+
"MCP_RESULT": mcp,
|
|
31
34
|
"SONAR_RESULT": sonar,
|
|
32
35
|
"SNYK_RESULT": snyk,
|
|
33
36
|
"SNYK_CODE_RESULT": snyk_code,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/__init__.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/cli.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/dedupe.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/embedding.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/extraction.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/inventory.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/ledger.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/migration.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/models.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/ownership.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/progress.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/provider.py
RENAMED
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/reset.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/retry.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/runtime.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/standalone.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/qdrant_memory/tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_bot_scope.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_cli_output.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_discovery_cli.py
RENAMED
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_host_lifecycle.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_live_metrics.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_maintenance.py
RENAMED
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_migration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_profile_scope.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_remote_qdrant.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_reset_recovery.py
RENAMED
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_retention.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_setup_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{hermes_plugin_qdrant_memory-0.2.1 → hermes_plugin_qdrant_memory-0.2.2}/tests/test_store_runtime.py
RENAMED
|
File without changes
|
|
File without changes
|