next-wiki-hermes-memory 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. next_wiki_hermes_memory-0.1.0/PKG-INFO +117 -0
  2. next_wiki_hermes_memory-0.1.0/README.md +96 -0
  3. next_wiki_hermes_memory-0.1.0/pyproject.toml +45 -0
  4. next_wiki_hermes_memory-0.1.0/setup.cfg +4 -0
  5. next_wiki_hermes_memory-0.1.0/src/next_wiki_hermes_memory.egg-info/PKG-INFO +117 -0
  6. next_wiki_hermes_memory-0.1.0/src/next_wiki_hermes_memory.egg-info/SOURCES.txt +24 -0
  7. next_wiki_hermes_memory-0.1.0/src/next_wiki_hermes_memory.egg-info/dependency_links.txt +1 -0
  8. next_wiki_hermes_memory-0.1.0/src/next_wiki_hermes_memory.egg-info/entry_points.txt +5 -0
  9. next_wiki_hermes_memory-0.1.0/src/next_wiki_hermes_memory.egg-info/requires.txt +4 -0
  10. next_wiki_hermes_memory-0.1.0/src/next_wiki_hermes_memory.egg-info/top_level.txt +1 -0
  11. next_wiki_hermes_memory-0.1.0/src/next_wiki_memory/__init__.py +373 -0
  12. next_wiki_hermes_memory-0.1.0/src/next_wiki_memory/api_client.py +95 -0
  13. next_wiki_hermes_memory-0.1.0/src/next_wiki_memory/cli.py +112 -0
  14. next_wiki_hermes_memory-0.1.0/src/next_wiki_memory/config.py +141 -0
  15. next_wiki_hermes_memory-0.1.0/src/next_wiki_memory/config_schema.py +23 -0
  16. next_wiki_hermes_memory-0.1.0/src/next_wiki_memory/redaction.py +28 -0
  17. next_wiki_hermes_memory-0.1.0/tests/test_api_client.py +77 -0
  18. next_wiki_hermes_memory-0.1.0/tests/test_availability.py +21 -0
  19. next_wiki_hermes_memory-0.1.0/tests/test_capture_lifecycle.py +54 -0
  20. next_wiki_hermes_memory-0.1.0/tests/test_checkpoints.py +39 -0
  21. next_wiki_hermes_memory-0.1.0/tests/test_cli.py +22 -0
  22. next_wiki_hermes_memory-0.1.0/tests/test_config.py +55 -0
  23. next_wiki_hermes_memory-0.1.0/tests/test_config_schema.py +16 -0
  24. next_wiki_hermes_memory-0.1.0/tests/test_provider.py +75 -0
  25. next_wiki_hermes_memory-0.1.0/tests/test_provider_registration.py +26 -0
  26. next_wiki_hermes_memory-0.1.0/tests/test_tools.py +36 -0
@@ -0,0 +1,117 @@
1
+ Metadata-Version: 2.4
2
+ Name: next-wiki-hermes-memory
3
+ Version: 0.1.0
4
+ Summary: Hermes MemoryProvider backed by next-wiki's scoped memory API
5
+ Author: next-wiki contributors
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/hugogu/next-wiki
8
+ Project-URL: Documentation, https://github.com/hugogu/next-wiki/blob/main/docs/hermes-memory-provider.md
9
+ Project-URL: Repository, https://github.com/hugogu/next-wiki
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3 :: Only
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Python: >=3.11
17
+ Description-Content-Type: text/markdown
18
+ Provides-Extra: dev
19
+ Requires-Dist: build>=1.2; extra == "dev"
20
+ Requires-Dist: pytest>=8; extra == "dev"
21
+
22
+ # next-wiki Hermes Memory Provider
23
+
24
+ Use a [next-wiki](https://github.com/hugogu/next-wiki) instance as the durable,
25
+ inspectable memory destination for one configured agent identity. Hermes is the
26
+ first client integration. Records are stored as immutable, append-only Raw
27
+ entries with published revisions. Each memory-provider API key is bound
28
+ server-side to one memory destination and identity, so a client cannot select
29
+ another profile's namespace through a tool argument or URL.
30
+
31
+ ## Install and activate
32
+
33
+ 1. Enable **LLM Wiki** writing mode so the shared Raw space is available. Then
34
+ open **User Center → API Keys** and select **Memory provider**. Set the
35
+ non-secret **Agent identity** (normally `hermes`). The preset grants only `memory.read`, `memory.write`, and
36
+ `memory.delete`; it does not grant generic page access. Copy the secret once.
37
+ 2. Install the provider:
38
+
39
+ ```bash
40
+ python -m pip install next-wiki-hermes-memory
41
+ hermes memory setup
42
+ hermes memory status
43
+ ```
44
+
45
+ 3. Select `next-wiki` in the Hermes picker. Enter the versioned API base URL
46
+ (for example `https://wiki.example.com/api/v1`) and enter the key only at
47
+ Hermes's secret prompt. Hermes exposes it as `NEXT_WIKI_MEMORY_API_KEY`.
48
+
49
+ The primary distribution path is the Python entry point
50
+ `hermes_agent.memory_providers`. For development only, a package can be placed
51
+ under `$HERMES_HOME/plugins/next-wiki` or `./.hermes/plugins/next-wiki` (the
52
+ latter needs `HERMES_ENABLE_PROJECT_PLUGINS=1`). Do not install two providers
53
+ with the `next-wiki` slug: Hermes uses discovery precedence and reports the
54
+ first matching provider.
55
+
56
+ ## Safe configuration and checks
57
+
58
+ The provider writes only non-secret settings (including `agent_identity`) to
59
+ `$HERMES_HOME/next-wiki-memory.json`; the secret belongs in Hermes's profile
60
+ secret store. It never accepts a key as a command-line argument.
61
+
62
+ ```bash
63
+ # Preview a local configuration without writing it or contacting the Wiki.
64
+ next-wiki-hermes-memory init --wiki-url https://wiki.example.com/api/v1 --dry-run
65
+
66
+ # Active-provider commands, after selecting next-wiki in Hermes.
67
+ hermes next-wiki status # local only; never prints the key
68
+ hermes next-wiki check # validates TLS, authentication, binding, and scopes
69
+ ```
70
+
71
+ `status` is intentionally offline. `check` returns repair guidance for invalid
72
+ or revoked keys, insufficient scopes, redirects, timeouts, an unavailable
73
+ route, and incompatible versions without echoing response bodies or secrets.
74
+
75
+ | Deployment | API URL example |
76
+ | --- | --- |
77
+ | Local Hermes + local Wiki | `http://127.0.0.1:3000/api/v1` |
78
+ | Remote / reverse-proxied Wiki | `https://wiki.example.com/api/v1` |
79
+ | Hermes in another container | the Wiki's reachable container/DNS address, normally HTTPS behind the proxy |
80
+
81
+ Remote URLs must use HTTPS. A loopback URL is valid only when Hermes runs in
82
+ the same network namespace as the Wiki; Docker containers generally cannot use
83
+ the host's `127.0.0.1`.
84
+
85
+ ## Memory behavior and privacy
86
+
87
+ Hermes receives three namespaced tools:
88
+
89
+ - `next_wiki_memory_search(query, limit)` recalls only the key's destination;
90
+ - `next_wiki_memory_save(content, title?, tags?)` writes an immutable Raw
91
+ memory record; and
92
+ - `next_wiki_memory_forget(memory_id, reason?)` hides a record from future
93
+ recall in that same destination. The original Raw entry is never changed.
94
+
95
+ Recall results contain a canonical Wiki revision citation. Automatic turn
96
+ capture is disabled by default. If it is enabled, the provider preserves only
97
+ user and assistant text, excludes tool calls/results and system content, and
98
+ does not capture delegated/non-primary agent contexts.
99
+
100
+ Strict pre-compression checkpoints are opt-in and require a Hermes runtime that
101
+ supports checkpoint API v2. When enabled, compression must not treat a
102
+ checkpoint as successful until the queued capture reports `durable`; a failed
103
+ or timed-out capture fails closed. Keep strict mode off on older Hermes
104
+ versions, and verify it after every Hermes upgrade.
105
+
106
+ ## Rotation, recovery, and backups
107
+
108
+ Create a new dedicated key, re-run setup, confirm `hermes next-wiki check`,
109
+ then revoke the old key in **User Center → API Keys**. Revocation stops future
110
+ access immediately. Forget changes only the Hermes record's recall state, so
111
+ the immutable Raw entry retains its original content and revisions for
112
+ administrators according to the Wiki's Raw-space retention policy.
113
+
114
+ Back up the Wiki database and content store with the normal deployment backup
115
+ procedure; memory pages and their revision citations are included. For full
116
+ server and reverse-proxy guidance, see
117
+ [the deployment guide](../../docs/hermes-memory-provider.md).
@@ -0,0 +1,96 @@
1
+ # next-wiki Hermes Memory Provider
2
+
3
+ Use a [next-wiki](https://github.com/hugogu/next-wiki) instance as the durable,
4
+ inspectable memory destination for one configured agent identity. Hermes is the
5
+ first client integration. Records are stored as immutable, append-only Raw
6
+ entries with published revisions. Each memory-provider API key is bound
7
+ server-side to one memory destination and identity, so a client cannot select
8
+ another profile's namespace through a tool argument or URL.
9
+
10
+ ## Install and activate
11
+
12
+ 1. Enable **LLM Wiki** writing mode so the shared Raw space is available. Then
13
+ open **User Center → API Keys** and select **Memory provider**. Set the
14
+ non-secret **Agent identity** (normally `hermes`). The preset grants only `memory.read`, `memory.write`, and
15
+ `memory.delete`; it does not grant generic page access. Copy the secret once.
16
+ 2. Install the provider:
17
+
18
+ ```bash
19
+ python -m pip install next-wiki-hermes-memory
20
+ hermes memory setup
21
+ hermes memory status
22
+ ```
23
+
24
+ 3. Select `next-wiki` in the Hermes picker. Enter the versioned API base URL
25
+ (for example `https://wiki.example.com/api/v1`) and enter the key only at
26
+ Hermes's secret prompt. Hermes exposes it as `NEXT_WIKI_MEMORY_API_KEY`.
27
+
28
+ The primary distribution path is the Python entry point
29
+ `hermes_agent.memory_providers`. For development only, a package can be placed
30
+ under `$HERMES_HOME/plugins/next-wiki` or `./.hermes/plugins/next-wiki` (the
31
+ latter needs `HERMES_ENABLE_PROJECT_PLUGINS=1`). Do not install two providers
32
+ with the `next-wiki` slug: Hermes uses discovery precedence and reports the
33
+ first matching provider.
34
+
35
+ ## Safe configuration and checks
36
+
37
+ The provider writes only non-secret settings (including `agent_identity`) to
38
+ `$HERMES_HOME/next-wiki-memory.json`; the secret belongs in Hermes's profile
39
+ secret store. It never accepts a key as a command-line argument.
40
+
41
+ ```bash
42
+ # Preview a local configuration without writing it or contacting the Wiki.
43
+ next-wiki-hermes-memory init --wiki-url https://wiki.example.com/api/v1 --dry-run
44
+
45
+ # Active-provider commands, after selecting next-wiki in Hermes.
46
+ hermes next-wiki status # local only; never prints the key
47
+ hermes next-wiki check # validates TLS, authentication, binding, and scopes
48
+ ```
49
+
50
+ `status` is intentionally offline. `check` returns repair guidance for invalid
51
+ or revoked keys, insufficient scopes, redirects, timeouts, an unavailable
52
+ route, and incompatible versions without echoing response bodies or secrets.
53
+
54
+ | Deployment | API URL example |
55
+ | --- | --- |
56
+ | Local Hermes + local Wiki | `http://127.0.0.1:3000/api/v1` |
57
+ | Remote / reverse-proxied Wiki | `https://wiki.example.com/api/v1` |
58
+ | Hermes in another container | the Wiki's reachable container/DNS address, normally HTTPS behind the proxy |
59
+
60
+ Remote URLs must use HTTPS. A loopback URL is valid only when Hermes runs in
61
+ the same network namespace as the Wiki; Docker containers generally cannot use
62
+ the host's `127.0.0.1`.
63
+
64
+ ## Memory behavior and privacy
65
+
66
+ Hermes receives three namespaced tools:
67
+
68
+ - `next_wiki_memory_search(query, limit)` recalls only the key's destination;
69
+ - `next_wiki_memory_save(content, title?, tags?)` writes an immutable Raw
70
+ memory record; and
71
+ - `next_wiki_memory_forget(memory_id, reason?)` hides a record from future
72
+ recall in that same destination. The original Raw entry is never changed.
73
+
74
+ Recall results contain a canonical Wiki revision citation. Automatic turn
75
+ capture is disabled by default. If it is enabled, the provider preserves only
76
+ user and assistant text, excludes tool calls/results and system content, and
77
+ does not capture delegated/non-primary agent contexts.
78
+
79
+ Strict pre-compression checkpoints are opt-in and require a Hermes runtime that
80
+ supports checkpoint API v2. When enabled, compression must not treat a
81
+ checkpoint as successful until the queued capture reports `durable`; a failed
82
+ or timed-out capture fails closed. Keep strict mode off on older Hermes
83
+ versions, and verify it after every Hermes upgrade.
84
+
85
+ ## Rotation, recovery, and backups
86
+
87
+ Create a new dedicated key, re-run setup, confirm `hermes next-wiki check`,
88
+ then revoke the old key in **User Center → API Keys**. Revocation stops future
89
+ access immediately. Forget changes only the Hermes record's recall state, so
90
+ the immutable Raw entry retains its original content and revisions for
91
+ administrators according to the Wiki's Raw-space retention policy.
92
+
93
+ Back up the Wiki database and content store with the normal deployment backup
94
+ procedure; memory pages and their revision citations are included. For full
95
+ server and reverse-proxy guidance, see
96
+ [the deployment guide](../../docs/hermes-memory-provider.md).
@@ -0,0 +1,45 @@
1
+ [build-system]
2
+ requires = ["setuptools>=69"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "next-wiki-hermes-memory"
7
+ version = "0.1.0"
8
+ description = "Hermes MemoryProvider backed by next-wiki's scoped memory API"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = "Apache-2.0"
12
+ authors = [{ name = "next-wiki contributors" }]
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "Programming Language :: Python :: 3",
16
+ "Programming Language :: Python :: 3 :: Only",
17
+ "Programming Language :: Python :: 3.11",
18
+ "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
20
+ ]
21
+
22
+ [project.urls]
23
+ Homepage = "https://github.com/hugogu/next-wiki"
24
+ Documentation = "https://github.com/hugogu/next-wiki/blob/main/docs/hermes-memory-provider.md"
25
+ Repository = "https://github.com/hugogu/next-wiki"
26
+
27
+ [project.scripts]
28
+ next-wiki-hermes-memory = "next_wiki_memory.cli:main"
29
+
30
+ [project.optional-dependencies]
31
+ dev = ["build>=1.2", "pytest>=8"]
32
+
33
+ [project.entry-points."hermes_agent.memory_providers"]
34
+ next-wiki = "next_wiki_memory:register"
35
+
36
+ [tool.pytest.ini_options]
37
+ testpaths = ["tests"]
38
+ addopts = "-q"
39
+
40
+ [tool.setuptools]
41
+ package-dir = { "" = "src" }
42
+ include-package-data = true
43
+
44
+ [tool.setuptools.packages.find]
45
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,117 @@
1
+ Metadata-Version: 2.4
2
+ Name: next-wiki-hermes-memory
3
+ Version: 0.1.0
4
+ Summary: Hermes MemoryProvider backed by next-wiki's scoped memory API
5
+ Author: next-wiki contributors
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/hugogu/next-wiki
8
+ Project-URL: Documentation, https://github.com/hugogu/next-wiki/blob/main/docs/hermes-memory-provider.md
9
+ Project-URL: Repository, https://github.com/hugogu/next-wiki
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3 :: Only
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Python: >=3.11
17
+ Description-Content-Type: text/markdown
18
+ Provides-Extra: dev
19
+ Requires-Dist: build>=1.2; extra == "dev"
20
+ Requires-Dist: pytest>=8; extra == "dev"
21
+
22
+ # next-wiki Hermes Memory Provider
23
+
24
+ Use a [next-wiki](https://github.com/hugogu/next-wiki) instance as the durable,
25
+ inspectable memory destination for one configured agent identity. Hermes is the
26
+ first client integration. Records are stored as immutable, append-only Raw
27
+ entries with published revisions. Each memory-provider API key is bound
28
+ server-side to one memory destination and identity, so a client cannot select
29
+ another profile's namespace through a tool argument or URL.
30
+
31
+ ## Install and activate
32
+
33
+ 1. Enable **LLM Wiki** writing mode so the shared Raw space is available. Then
34
+ open **User Center → API Keys** and select **Memory provider**. Set the
35
+ non-secret **Agent identity** (normally `hermes`). The preset grants only `memory.read`, `memory.write`, and
36
+ `memory.delete`; it does not grant generic page access. Copy the secret once.
37
+ 2. Install the provider:
38
+
39
+ ```bash
40
+ python -m pip install next-wiki-hermes-memory
41
+ hermes memory setup
42
+ hermes memory status
43
+ ```
44
+
45
+ 3. Select `next-wiki` in the Hermes picker. Enter the versioned API base URL
46
+ (for example `https://wiki.example.com/api/v1`) and enter the key only at
47
+ Hermes's secret prompt. Hermes exposes it as `NEXT_WIKI_MEMORY_API_KEY`.
48
+
49
+ The primary distribution path is the Python entry point
50
+ `hermes_agent.memory_providers`. For development only, a package can be placed
51
+ under `$HERMES_HOME/plugins/next-wiki` or `./.hermes/plugins/next-wiki` (the
52
+ latter needs `HERMES_ENABLE_PROJECT_PLUGINS=1`). Do not install two providers
53
+ with the `next-wiki` slug: Hermes uses discovery precedence and reports the
54
+ first matching provider.
55
+
56
+ ## Safe configuration and checks
57
+
58
+ The provider writes only non-secret settings (including `agent_identity`) to
59
+ `$HERMES_HOME/next-wiki-memory.json`; the secret belongs in Hermes's profile
60
+ secret store. It never accepts a key as a command-line argument.
61
+
62
+ ```bash
63
+ # Preview a local configuration without writing it or contacting the Wiki.
64
+ next-wiki-hermes-memory init --wiki-url https://wiki.example.com/api/v1 --dry-run
65
+
66
+ # Active-provider commands, after selecting next-wiki in Hermes.
67
+ hermes next-wiki status # local only; never prints the key
68
+ hermes next-wiki check # validates TLS, authentication, binding, and scopes
69
+ ```
70
+
71
+ `status` is intentionally offline. `check` returns repair guidance for invalid
72
+ or revoked keys, insufficient scopes, redirects, timeouts, an unavailable
73
+ route, and incompatible versions without echoing response bodies or secrets.
74
+
75
+ | Deployment | API URL example |
76
+ | --- | --- |
77
+ | Local Hermes + local Wiki | `http://127.0.0.1:3000/api/v1` |
78
+ | Remote / reverse-proxied Wiki | `https://wiki.example.com/api/v1` |
79
+ | Hermes in another container | the Wiki's reachable container/DNS address, normally HTTPS behind the proxy |
80
+
81
+ Remote URLs must use HTTPS. A loopback URL is valid only when Hermes runs in
82
+ the same network namespace as the Wiki; Docker containers generally cannot use
83
+ the host's `127.0.0.1`.
84
+
85
+ ## Memory behavior and privacy
86
+
87
+ Hermes receives three namespaced tools:
88
+
89
+ - `next_wiki_memory_search(query, limit)` recalls only the key's destination;
90
+ - `next_wiki_memory_save(content, title?, tags?)` writes an immutable Raw
91
+ memory record; and
92
+ - `next_wiki_memory_forget(memory_id, reason?)` hides a record from future
93
+ recall in that same destination. The original Raw entry is never changed.
94
+
95
+ Recall results contain a canonical Wiki revision citation. Automatic turn
96
+ capture is disabled by default. If it is enabled, the provider preserves only
97
+ user and assistant text, excludes tool calls/results and system content, and
98
+ does not capture delegated/non-primary agent contexts.
99
+
100
+ Strict pre-compression checkpoints are opt-in and require a Hermes runtime that
101
+ supports checkpoint API v2. When enabled, compression must not treat a
102
+ checkpoint as successful until the queued capture reports `durable`; a failed
103
+ or timed-out capture fails closed. Keep strict mode off on older Hermes
104
+ versions, and verify it after every Hermes upgrade.
105
+
106
+ ## Rotation, recovery, and backups
107
+
108
+ Create a new dedicated key, re-run setup, confirm `hermes next-wiki check`,
109
+ then revoke the old key in **User Center → API Keys**. Revocation stops future
110
+ access immediately. Forget changes only the Hermes record's recall state, so
111
+ the immutable Raw entry retains its original content and revisions for
112
+ administrators according to the Wiki's Raw-space retention policy.
113
+
114
+ Back up the Wiki database and content store with the normal deployment backup
115
+ procedure; memory pages and their revision citations are included. For full
116
+ server and reverse-proxy guidance, see
117
+ [the deployment guide](../../docs/hermes-memory-provider.md).
@@ -0,0 +1,24 @@
1
+ README.md
2
+ pyproject.toml
3
+ src/next_wiki_hermes_memory.egg-info/PKG-INFO
4
+ src/next_wiki_hermes_memory.egg-info/SOURCES.txt
5
+ src/next_wiki_hermes_memory.egg-info/dependency_links.txt
6
+ src/next_wiki_hermes_memory.egg-info/entry_points.txt
7
+ src/next_wiki_hermes_memory.egg-info/requires.txt
8
+ src/next_wiki_hermes_memory.egg-info/top_level.txt
9
+ src/next_wiki_memory/__init__.py
10
+ src/next_wiki_memory/api_client.py
11
+ src/next_wiki_memory/cli.py
12
+ src/next_wiki_memory/config.py
13
+ src/next_wiki_memory/config_schema.py
14
+ src/next_wiki_memory/redaction.py
15
+ tests/test_api_client.py
16
+ tests/test_availability.py
17
+ tests/test_capture_lifecycle.py
18
+ tests/test_checkpoints.py
19
+ tests/test_cli.py
20
+ tests/test_config.py
21
+ tests/test_config_schema.py
22
+ tests/test_provider.py
23
+ tests/test_provider_registration.py
24
+ tests/test_tools.py
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ next-wiki-hermes-memory = next_wiki_memory.cli:main
3
+
4
+ [hermes_agent.memory_providers]
5
+ next-wiki = next_wiki_memory:register
@@ -0,0 +1,4 @@
1
+
2
+ [dev]
3
+ build>=1.2
4
+ pytest>=8