atmem 2.2.4__tar.gz → 2.2.5__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 (148) hide show
  1. {atmem-2.2.4/atmem.egg-info → atmem-2.2.5}/PKG-INFO +16 -16
  2. {atmem-2.2.4 → atmem-2.2.5}/README.md +14 -14
  3. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/atbot_service.py +1 -1
  4. {atmem-2.2.4 → atmem-2.2.5}/atmem/mcp/server.py +1 -1
  5. {atmem-2.2.4 → atmem-2.2.5}/atmem/openclaw_install.py +1 -1
  6. {atmem-2.2.4 → atmem-2.2.5/atmem.egg-info}/PKG-INFO +16 -16
  7. {atmem-2.2.4 → atmem-2.2.5}/atmem.egg-info/SOURCES.txt +1 -0
  8. {atmem-2.2.4 → atmem-2.2.5}/atmem.egg-info/requires.txt +1 -1
  9. {atmem-2.2.4 → atmem-2.2.5}/docs/atbot-release.md +1 -1
  10. {atmem-2.2.4 → atmem-2.2.5}/docs/capabilities.json +2 -2
  11. {atmem-2.2.4 → atmem-2.2.5}/docs/current-status.md +7 -5
  12. {atmem-2.2.4 → atmem-2.2.5}/docs/openclaw-setup.md +2 -2
  13. atmem-2.2.5/docs/releases/v2.2.5.md +34 -0
  14. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/README.md +2 -2
  15. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/openclaw.plugin.json +1 -1
  16. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/package-lock.json +2 -2
  17. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/package.json +1 -1
  18. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/src/rpc-client.ts +1 -1
  19. {atmem-2.2.4 → atmem-2.2.5}/pyproject.toml +2 -2
  20. {atmem-2.2.4 → atmem-2.2.5}/tests/test_cli_guidance.py +3 -3
  21. {atmem-2.2.4 → atmem-2.2.5}/tests/test_control_plane.py +3 -3
  22. {atmem-2.2.4 → atmem-2.2.5}/tests/test_dashboard_daemon.py +4 -4
  23. {atmem-2.2.4 → atmem-2.2.5}/tests/test_documentation.py +3 -3
  24. {atmem-2.2.4 → atmem-2.2.5}/tools/smoke_installed_package.py +2 -2
  25. {atmem-2.2.4 → atmem-2.2.5}/tools/smoke_upgrade_from_2_1.py +5 -5
  26. {atmem-2.2.4 → atmem-2.2.5}/LICENSE +0 -0
  27. {atmem-2.2.4 → atmem-2.2.5}/MANIFEST.in +0 -0
  28. {atmem-2.2.4 → atmem-2.2.5}/atmem/__init__.py +0 -0
  29. {atmem-2.2.4 → atmem-2.2.5}/atmem/adapters/__init__.py +0 -0
  30. {atmem-2.2.4 → atmem-2.2.5}/atmem/adapters/base.py +0 -0
  31. {atmem-2.2.4 → atmem-2.2.5}/atmem/adapters/langgraph.py +0 -0
  32. {atmem-2.2.4 → atmem-2.2.5}/atmem/adapters/pydantic_ai.py +0 -0
  33. {atmem-2.2.4 → atmem-2.2.5}/atmem/cli.py +0 -0
  34. {atmem-2.2.4 → atmem-2.2.5}/atmem/contracts/__init__.py +0 -0
  35. {atmem-2.2.4 → atmem-2.2.5}/atmem/contracts/models.py +0 -0
  36. {atmem-2.2.4 → atmem-2.2.5}/atmem/contracts/versions.py +0 -0
  37. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/__init__.py +0 -0
  38. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/assets/app.css +0 -0
  39. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/assets/app.html +0 -0
  40. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/assets/app.js +0 -0
  41. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/assets/atmem.jpg +0 -0
  42. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/atbot_companion.py +0 -0
  43. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/blackbox.py +0 -0
  44. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/compat.py +0 -0
  45. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/evidence.py +0 -0
  46. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/hosts.py +0 -0
  47. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/manager.py +0 -0
  48. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/models.py +0 -0
  49. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/openclaw_native.py +0 -0
  50. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/openclaw_topology.py +0 -0
  51. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/server.py +0 -0
  52. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/state.py +0 -0
  53. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/store.py +0 -0
  54. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/topology.py +0 -0
  55. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/ui.py +0 -0
  56. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/verify.py +0 -0
  57. {atmem-2.2.4 → atmem-2.2.5}/atmem/control/web.py +0 -0
  58. {atmem-2.2.4 → atmem-2.2.5}/atmem/core/__init__.py +0 -0
  59. {atmem-2.2.4 → atmem-2.2.5}/atmem/core/canonical.py +0 -0
  60. {atmem-2.2.4 → atmem-2.2.5}/atmem/core/fact_keys.py +0 -0
  61. {atmem-2.2.4 → atmem-2.2.5}/atmem/core/keys.py +0 -0
  62. {atmem-2.2.4 → atmem-2.2.5}/atmem/core/policy.py +0 -0
  63. {atmem-2.2.4 → atmem-2.2.5}/atmem/core/storage.py +0 -0
  64. {atmem-2.2.4 → atmem-2.2.5}/atmem/dashboard_daemon.py +0 -0
  65. {atmem-2.2.4 → atmem-2.2.5}/atmem/extract/__init__.py +0 -0
  66. {atmem-2.2.4 → atmem-2.2.5}/atmem/extract/rules.py +0 -0
  67. {atmem-2.2.4 → atmem-2.2.5}/atmem/graph.py +0 -0
  68. {atmem-2.2.4 → atmem-2.2.5}/atmem/investigate.py +0 -0
  69. {atmem-2.2.4 → atmem-2.2.5}/atmem/maintenance.py +0 -0
  70. {atmem-2.2.4 → atmem-2.2.5}/atmem/mcp/__init__.py +0 -0
  71. {atmem-2.2.4 → atmem-2.2.5}/atmem/media.py +0 -0
  72. {atmem-2.2.4 → atmem-2.2.5}/atmem/memory.py +0 -0
  73. {atmem-2.2.4 → atmem-2.2.5}/atmem/retrieve/__init__.py +0 -0
  74. {atmem-2.2.4 → atmem-2.2.5}/atmem/retrieve/rank.py +0 -0
  75. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/__init__.py +0 -0
  76. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/v1/capabilities.json +0 -0
  77. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/v1/context-package.json +0 -0
  78. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/v1/memory-proposal.json +0 -0
  79. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/v1/recall-request.json +0 -0
  80. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/v1/scope.json +0 -0
  81. {atmem-2.2.4 → atmem-2.2.5}/atmem/schemas/v1/source-capture.json +0 -0
  82. {atmem-2.2.4 → atmem-2.2.5}/atmem/semantic/__init__.py +0 -0
  83. {atmem-2.2.4 → atmem-2.2.5}/atmem/semantic/index.py +0 -0
  84. {atmem-2.2.4 → atmem-2.2.5}/atmem/semantic/providers.py +0 -0
  85. {atmem-2.2.4 → atmem-2.2.5}/atmem/store/__init__.py +0 -0
  86. {atmem-2.2.4 → atmem-2.2.5}/atmem/store/sqlite.py +0 -0
  87. {atmem-2.2.4 → atmem-2.2.5}/atmem.egg-info/dependency_links.txt +0 -0
  88. {atmem-2.2.4 → atmem-2.2.5}/atmem.egg-info/entry_points.txt +0 -0
  89. {atmem-2.2.4 → atmem-2.2.5}/atmem.egg-info/top_level.txt +0 -0
  90. {atmem-2.2.4 → atmem-2.2.5}/docs/agent-blackbox.md +0 -0
  91. {atmem-2.2.4 → atmem-2.2.5}/docs/audit-log-spec.md +0 -0
  92. {atmem-2.2.4 → atmem-2.2.5}/docs/audit-search.md +0 -0
  93. {atmem-2.2.4 → atmem-2.2.5}/docs/auditing-guide.md +0 -0
  94. {atmem-2.2.4 → atmem-2.2.5}/docs/control-plane.md +0 -0
  95. {atmem-2.2.4 → atmem-2.2.5}/docs/dashboard-design-language.md +0 -0
  96. {atmem-2.2.4 → atmem-2.2.5}/docs/data-storage-and-backup.md +0 -0
  97. {atmem-2.2.4 → atmem-2.2.5}/docs/framework-adapters.md +0 -0
  98. {atmem-2.2.4 → atmem-2.2.5}/docs/generic-adapter.md +0 -0
  99. {atmem-2.2.4 → atmem-2.2.5}/docs/integration-guide.md +0 -0
  100. {atmem-2.2.4 → atmem-2.2.5}/docs/multimodal-observations.md +0 -0
  101. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v1.0.0.md +0 -0
  102. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.0.0.md +0 -0
  103. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.0.1.md +0 -0
  104. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.1.0.md +0 -0
  105. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.2.0.md +0 -0
  106. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.2.1.md +0 -0
  107. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.2.2.md +0 -0
  108. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.2.3.md +0 -0
  109. {atmem-2.2.4 → atmem-2.2.5}/docs/releases/v2.2.4.md +0 -0
  110. {atmem-2.2.4 → atmem-2.2.5}/docs/saas-integration.md +0 -0
  111. {atmem-2.2.4 → atmem-2.2.5}/docs/semantic-search.md +0 -0
  112. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/index.ts +0 -0
  113. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/src/setup.ts +0 -0
  114. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/src/types.ts +0 -0
  115. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/test/hooks.mjs +0 -0
  116. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/test/setup.mjs +0 -0
  117. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/test/smoke.mjs +0 -0
  118. {atmem-2.2.4 → atmem-2.2.5}/integrations/openclaw/tsconfig.json +0 -0
  119. {atmem-2.2.4 → atmem-2.2.5}/setup.cfg +0 -0
  120. {atmem-2.2.4 → atmem-2.2.5}/tests/test_atbot_companion.py +0 -0
  121. {atmem-2.2.4 → atmem-2.2.5}/tests/test_atbot_service.py +0 -0
  122. {atmem-2.2.4 → atmem-2.2.5}/tests/test_auditability.py +0 -0
  123. {atmem-2.2.4 → atmem-2.2.5}/tests/test_blackbox.py +0 -0
  124. {atmem-2.2.4 → atmem-2.2.5}/tests/test_cli.py +0 -0
  125. {atmem-2.2.4 → atmem-2.2.5}/tests/test_contracts_v1.py +0 -0
  126. {atmem-2.2.4 → atmem-2.2.5}/tests/test_control_evidence.py +0 -0
  127. {atmem-2.2.4 → atmem-2.2.5}/tests/test_control_verify.py +0 -0
  128. {atmem-2.2.4 → atmem-2.2.5}/tests/test_encryption.py +0 -0
  129. {atmem-2.2.4 → atmem-2.2.5}/tests/test_extract.py +0 -0
  130. {atmem-2.2.4 → atmem-2.2.5}/tests/test_framework_adapters.py +0 -0
  131. {atmem-2.2.4 → atmem-2.2.5}/tests/test_generic_control.py +0 -0
  132. {atmem-2.2.4 → atmem-2.2.5}/tests/test_graph.py +0 -0
  133. {atmem-2.2.4 → atmem-2.2.5}/tests/test_host_adapter.py +0 -0
  134. {atmem-2.2.4 → atmem-2.2.5}/tests/test_layers.py +0 -0
  135. {atmem-2.2.4 → atmem-2.2.5}/tests/test_maintenance.py +0 -0
  136. {atmem-2.2.4 → atmem-2.2.5}/tests/test_mcp.py +0 -0
  137. {atmem-2.2.4 → atmem-2.2.5}/tests/test_media_observations.py +0 -0
  138. {atmem-2.2.4 → atmem-2.2.5}/tests/test_memory.py +0 -0
  139. {atmem-2.2.4 → atmem-2.2.5}/tests/test_openclaw_control.py +0 -0
  140. {atmem-2.2.4 → atmem-2.2.5}/tests/test_openclaw_install.py +0 -0
  141. {atmem-2.2.4 → atmem-2.2.5}/tests/test_openclaw_topology.py +0 -0
  142. {atmem-2.2.4 → atmem-2.2.5}/tests/test_policy.py +0 -0
  143. {atmem-2.2.4 → atmem-2.2.5}/tests/test_recall_evidence.py +0 -0
  144. {atmem-2.2.4 → atmem-2.2.5}/tests/test_restore_receipt.py +0 -0
  145. {atmem-2.2.4 → atmem-2.2.5}/tests/test_retrieve.py +0 -0
  146. {atmem-2.2.4 → atmem-2.2.5}/tests/test_semantic_search.py +0 -0
  147. {atmem-2.2.4 → atmem-2.2.5}/tests/test_store_transactions.py +0 -0
  148. {atmem-2.2.4 → atmem-2.2.5}/tools/verify_audit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atmem
3
- Version: 2.2.4
3
+ Version: 2.2.5
4
4
  Summary: Host-neutral Agent Black Box and reversible memory control plane.
5
5
  Author-email: aetna000 <aetna000@gmail.com>
6
6
  Maintainer-email: aetna000 <aetna000@gmail.com>
@@ -24,7 +24,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
24
  Requires-Python: >=3.10
25
25
  Description-Content-Type: text/markdown
26
26
  License-File: LICENSE
27
- Requires-Dist: atmem-atbot==0.1.0a3
27
+ Requires-Dist: atmem-atbot==0.1.0a4
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: pytest>=8.0.0; extra == "dev"
30
30
  Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "dev"
@@ -44,7 +44,7 @@ Dynamic: license-file
44
44
 
45
45
  # AtMem
46
46
 
47
- [![Version 2.2.4](https://img.shields.io/badge/version-2.2.4-blue)](./docs/releases/v2.2.4.md)
47
+ [![Version 2.2.5](https://img.shields.io/badge/version-2.2.5-blue)](./docs/releases/v2.2.5.md)
48
48
  [![CI](https://github.com/aetna000/atmem/actions/workflows/ci.yml/badge.svg)](https://github.com/aetna000/atmem/actions/workflows/ci.yml)
49
49
 
50
50
  **AtMem is a host-neutral Agent Black Box and reversible memory control plane.**
@@ -59,7 +59,7 @@ authorizes, stores, scopes, injects, corrects, and deletes memory.
59
59
  ### 1. Install AtMem and choose memory intelligence
60
60
 
61
61
  ```bash
62
- python -m pip install --upgrade atmem==2.2.4
62
+ python -m pip install --upgrade atmem==2.2.5
63
63
  atmem atbot setup
64
64
  atmem atbot doctor
65
65
  atmem dashboard
@@ -87,7 +87,7 @@ connection. Do not install the npm package yourself.
87
87
  Already using AtMem 2.1 with OpenClaw? Upgrade in place:
88
88
 
89
89
  ```bash
90
- python -m pip install --upgrade atmem==2.2.4
90
+ python -m pip install --upgrade atmem==2.2.5
91
91
  atmem openclaw upgrade
92
92
  atmem control verify
93
93
  ```
@@ -110,7 +110,7 @@ selected by `python`, rather than an unrelated `pip` executable on `PATH`.
110
110
  #### Pydantic AI — native capability
111
111
 
112
112
  ```bash
113
- python -m pip install 'atmem[pydantic-ai]==2.2.4'
113
+ python -m pip install 'atmem[pydantic-ai]==2.2.5'
114
114
  atmem control shadow --host generic --memory-db ~/.atmem/memories.db
115
115
  ```
116
116
 
@@ -134,7 +134,7 @@ agent = Agent("openai:gpt-5-mini", capabilities=[memory])
134
134
  #### LangChain/LangGraph — native middleware
135
135
 
136
136
  ```bash
137
- python -m pip install 'atmem[langgraph]==2.2.4'
137
+ python -m pip install 'atmem[langgraph]==2.2.5'
138
138
  atmem control shadow --host generic --memory-db ~/.atmem/memories.db
139
139
  ```
140
140
 
@@ -178,7 +178,7 @@ If AtBot or its selected model is unavailable, AtMem continues with safe local
178
178
  capture and hybrid ranking. Memory authority and agent operation do not depend
179
179
  on a hosted model.
180
180
 
181
- > **Release status:** this repository describes **AtMem 2.2.4**. AtBot is a
181
+ > **Release status:** this repository describes **AtMem 2.2.5**. AtBot is a
182
182
  > separately packaged, headless component installed and managed by AtMem; it is
183
183
  > not an independent agent or a second memory authority.
184
184
 
@@ -197,7 +197,7 @@ and restores it exactly.
197
197
  ## Installation details
198
198
 
199
199
  ```bash
200
- python -m pip install atmem==2.2.4
200
+ python -m pip install atmem==2.2.5
201
201
  atmem --version
202
202
  ```
203
203
 
@@ -205,7 +205,7 @@ AtMem requires Python 3.10 or newer. It always creates a dependency-free local
205
205
  vector sidecar; the semantic extra adds an optional local embedding upgrade:
206
206
 
207
207
  ```bash
208
- python -m pip install 'atmem[semantic]==2.2.4'
208
+ python -m pip install 'atmem[semantic]==2.2.5'
209
209
  ```
210
210
 
211
211
  For repository development, install both workspace packages:
@@ -215,10 +215,10 @@ python -m pip install -e './packages/atbot[dev]' -e '.[dev]'
215
215
  atmem atbot setup
216
216
  ```
217
217
 
218
- The authority modules remain model-agnostic and do not import AtBot, but the
219
- AtMem distribution requires the separately packaged, exactly pinned AtBot
220
- companion. Consequently a complete 2.2 installation has AtBot's transitive
221
- dependencies even when the user selects AtMem's deterministic fallback.
218
+ The authority modules remain model-agnostic and do not import AtBot. The AtMem
219
+ distribution requires the separately packaged, exactly pinned AtBot companion,
220
+ whose built-in Ollama and OpenAI-compatible client uses only the Python standard
221
+ library. Framework SDKs enter the environment only through explicit extras.
222
222
 
223
223
  ## Integration boundaries
224
224
 
@@ -385,7 +385,7 @@ atmem control restore
385
385
  Existing 2.1 installations upgrade without starting a new migration:
386
386
 
387
387
  ```bash
388
- python -m pip install --upgrade atmem==2.2.4
388
+ python -m pip install --upgrade atmem==2.2.5
389
389
  atmem openclaw upgrade
390
390
  atmem control verify
391
391
  ```
@@ -531,7 +531,7 @@ npm test
531
531
  npm run smoke
532
532
  ```
533
533
 
534
- Current repository metadata is version **2.2.4**. Python and npm release
534
+ Current repository metadata is version **2.2.5**. Python and npm release
535
535
  versions are intentionally kept equal because the OpenClaw installer pins the
536
536
  matching bridge.
537
537
 
@@ -1,6 +1,6 @@
1
1
  # AtMem
2
2
 
3
- [![Version 2.2.4](https://img.shields.io/badge/version-2.2.4-blue)](./docs/releases/v2.2.4.md)
3
+ [![Version 2.2.5](https://img.shields.io/badge/version-2.2.5-blue)](./docs/releases/v2.2.5.md)
4
4
  [![CI](https://github.com/aetna000/atmem/actions/workflows/ci.yml/badge.svg)](https://github.com/aetna000/atmem/actions/workflows/ci.yml)
5
5
 
6
6
  **AtMem is a host-neutral Agent Black Box and reversible memory control plane.**
@@ -15,7 +15,7 @@ authorizes, stores, scopes, injects, corrects, and deletes memory.
15
15
  ### 1. Install AtMem and choose memory intelligence
16
16
 
17
17
  ```bash
18
- python -m pip install --upgrade atmem==2.2.4
18
+ python -m pip install --upgrade atmem==2.2.5
19
19
  atmem atbot setup
20
20
  atmem atbot doctor
21
21
  atmem dashboard
@@ -43,7 +43,7 @@ connection. Do not install the npm package yourself.
43
43
  Already using AtMem 2.1 with OpenClaw? Upgrade in place:
44
44
 
45
45
  ```bash
46
- python -m pip install --upgrade atmem==2.2.4
46
+ python -m pip install --upgrade atmem==2.2.5
47
47
  atmem openclaw upgrade
48
48
  atmem control verify
49
49
  ```
@@ -66,7 +66,7 @@ selected by `python`, rather than an unrelated `pip` executable on `PATH`.
66
66
  #### Pydantic AI — native capability
67
67
 
68
68
  ```bash
69
- python -m pip install 'atmem[pydantic-ai]==2.2.4'
69
+ python -m pip install 'atmem[pydantic-ai]==2.2.5'
70
70
  atmem control shadow --host generic --memory-db ~/.atmem/memories.db
71
71
  ```
72
72
 
@@ -90,7 +90,7 @@ agent = Agent("openai:gpt-5-mini", capabilities=[memory])
90
90
  #### LangChain/LangGraph — native middleware
91
91
 
92
92
  ```bash
93
- python -m pip install 'atmem[langgraph]==2.2.4'
93
+ python -m pip install 'atmem[langgraph]==2.2.5'
94
94
  atmem control shadow --host generic --memory-db ~/.atmem/memories.db
95
95
  ```
96
96
 
@@ -134,7 +134,7 @@ If AtBot or its selected model is unavailable, AtMem continues with safe local
134
134
  capture and hybrid ranking. Memory authority and agent operation do not depend
135
135
  on a hosted model.
136
136
 
137
- > **Release status:** this repository describes **AtMem 2.2.4**. AtBot is a
137
+ > **Release status:** this repository describes **AtMem 2.2.5**. AtBot is a
138
138
  > separately packaged, headless component installed and managed by AtMem; it is
139
139
  > not an independent agent or a second memory authority.
140
140
 
@@ -153,7 +153,7 @@ and restores it exactly.
153
153
  ## Installation details
154
154
 
155
155
  ```bash
156
- python -m pip install atmem==2.2.4
156
+ python -m pip install atmem==2.2.5
157
157
  atmem --version
158
158
  ```
159
159
 
@@ -161,7 +161,7 @@ AtMem requires Python 3.10 or newer. It always creates a dependency-free local
161
161
  vector sidecar; the semantic extra adds an optional local embedding upgrade:
162
162
 
163
163
  ```bash
164
- python -m pip install 'atmem[semantic]==2.2.4'
164
+ python -m pip install 'atmem[semantic]==2.2.5'
165
165
  ```
166
166
 
167
167
  For repository development, install both workspace packages:
@@ -171,10 +171,10 @@ python -m pip install -e './packages/atbot[dev]' -e '.[dev]'
171
171
  atmem atbot setup
172
172
  ```
173
173
 
174
- The authority modules remain model-agnostic and do not import AtBot, but the
175
- AtMem distribution requires the separately packaged, exactly pinned AtBot
176
- companion. Consequently a complete 2.2 installation has AtBot's transitive
177
- dependencies even when the user selects AtMem's deterministic fallback.
174
+ The authority modules remain model-agnostic and do not import AtBot. The AtMem
175
+ distribution requires the separately packaged, exactly pinned AtBot companion,
176
+ whose built-in Ollama and OpenAI-compatible client uses only the Python standard
177
+ library. Framework SDKs enter the environment only through explicit extras.
178
178
 
179
179
  ## Integration boundaries
180
180
 
@@ -341,7 +341,7 @@ atmem control restore
341
341
  Existing 2.1 installations upgrade without starting a new migration:
342
342
 
343
343
  ```bash
344
- python -m pip install --upgrade atmem==2.2.4
344
+ python -m pip install --upgrade atmem==2.2.5
345
345
  atmem openclaw upgrade
346
346
  atmem control verify
347
347
  ```
@@ -487,7 +487,7 @@ npm test
487
487
  npm run smoke
488
488
  ```
489
489
 
490
- Current repository metadata is version **2.2.4**. Python and npm release
490
+ Current repository metadata is version **2.2.5**. Python and npm release
491
491
  versions are intentionally kept equal because the OpenClaw installer pins the
492
492
  matching bridge.
493
493
 
@@ -16,7 +16,7 @@ from typing import Any
16
16
  from urllib.parse import urlparse
17
17
 
18
18
 
19
- PINNED_ATBOT_VERSION = "0.1.0a3"
19
+ PINNED_ATBOT_VERSION = "0.1.0a4"
20
20
  ATBOT_DISTRIBUTION = "atmem-atbot"
21
21
  ATBOT_PROTOCOL_VERSION = "1"
22
22
  DEFAULT_ROOT = Path.home() / ".atmem" / "atbot"
@@ -26,7 +26,7 @@ try:
26
26
 
27
27
  SERVER_VERSION = _pkg_version("atmem")
28
28
  except Exception: # not installed (e.g. run from a checkout)
29
- SERVER_VERSION = "2.2.4"
29
+ SERVER_VERSION = "2.2.5"
30
30
 
31
31
  _SUBJECT_PROPERTY = {
32
32
  "subject_id": {
@@ -17,7 +17,7 @@ from atmem.control.manager import DEFAULT_STATE_PATH, DEFAULT_CONTROL_ROOT
17
17
 
18
18
  OPENCLAW_PLUGIN_ID = "memory-atmem"
19
19
  OPENCLAW_PLUGIN_PACKAGE = "openclaw-memory-atmem"
20
- OPENCLAW_PLUGIN_VERSION = "2.2.4"
20
+ OPENCLAW_PLUGIN_VERSION = "2.2.5"
21
21
  _CONFIG_KEY = "plugins.entries.memory-atmem"
22
22
 
23
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atmem
3
- Version: 2.2.4
3
+ Version: 2.2.5
4
4
  Summary: Host-neutral Agent Black Box and reversible memory control plane.
5
5
  Author-email: aetna000 <aetna000@gmail.com>
6
6
  Maintainer-email: aetna000 <aetna000@gmail.com>
@@ -24,7 +24,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
24
  Requires-Python: >=3.10
25
25
  Description-Content-Type: text/markdown
26
26
  License-File: LICENSE
27
- Requires-Dist: atmem-atbot==0.1.0a3
27
+ Requires-Dist: atmem-atbot==0.1.0a4
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: pytest>=8.0.0; extra == "dev"
30
30
  Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "dev"
@@ -44,7 +44,7 @@ Dynamic: license-file
44
44
 
45
45
  # AtMem
46
46
 
47
- [![Version 2.2.4](https://img.shields.io/badge/version-2.2.4-blue)](./docs/releases/v2.2.4.md)
47
+ [![Version 2.2.5](https://img.shields.io/badge/version-2.2.5-blue)](./docs/releases/v2.2.5.md)
48
48
  [![CI](https://github.com/aetna000/atmem/actions/workflows/ci.yml/badge.svg)](https://github.com/aetna000/atmem/actions/workflows/ci.yml)
49
49
 
50
50
  **AtMem is a host-neutral Agent Black Box and reversible memory control plane.**
@@ -59,7 +59,7 @@ authorizes, stores, scopes, injects, corrects, and deletes memory.
59
59
  ### 1. Install AtMem and choose memory intelligence
60
60
 
61
61
  ```bash
62
- python -m pip install --upgrade atmem==2.2.4
62
+ python -m pip install --upgrade atmem==2.2.5
63
63
  atmem atbot setup
64
64
  atmem atbot doctor
65
65
  atmem dashboard
@@ -87,7 +87,7 @@ connection. Do not install the npm package yourself.
87
87
  Already using AtMem 2.1 with OpenClaw? Upgrade in place:
88
88
 
89
89
  ```bash
90
- python -m pip install --upgrade atmem==2.2.4
90
+ python -m pip install --upgrade atmem==2.2.5
91
91
  atmem openclaw upgrade
92
92
  atmem control verify
93
93
  ```
@@ -110,7 +110,7 @@ selected by `python`, rather than an unrelated `pip` executable on `PATH`.
110
110
  #### Pydantic AI — native capability
111
111
 
112
112
  ```bash
113
- python -m pip install 'atmem[pydantic-ai]==2.2.4'
113
+ python -m pip install 'atmem[pydantic-ai]==2.2.5'
114
114
  atmem control shadow --host generic --memory-db ~/.atmem/memories.db
115
115
  ```
116
116
 
@@ -134,7 +134,7 @@ agent = Agent("openai:gpt-5-mini", capabilities=[memory])
134
134
  #### LangChain/LangGraph — native middleware
135
135
 
136
136
  ```bash
137
- python -m pip install 'atmem[langgraph]==2.2.4'
137
+ python -m pip install 'atmem[langgraph]==2.2.5'
138
138
  atmem control shadow --host generic --memory-db ~/.atmem/memories.db
139
139
  ```
140
140
 
@@ -178,7 +178,7 @@ If AtBot or its selected model is unavailable, AtMem continues with safe local
178
178
  capture and hybrid ranking. Memory authority and agent operation do not depend
179
179
  on a hosted model.
180
180
 
181
- > **Release status:** this repository describes **AtMem 2.2.4**. AtBot is a
181
+ > **Release status:** this repository describes **AtMem 2.2.5**. AtBot is a
182
182
  > separately packaged, headless component installed and managed by AtMem; it is
183
183
  > not an independent agent or a second memory authority.
184
184
 
@@ -197,7 +197,7 @@ and restores it exactly.
197
197
  ## Installation details
198
198
 
199
199
  ```bash
200
- python -m pip install atmem==2.2.4
200
+ python -m pip install atmem==2.2.5
201
201
  atmem --version
202
202
  ```
203
203
 
@@ -205,7 +205,7 @@ AtMem requires Python 3.10 or newer. It always creates a dependency-free local
205
205
  vector sidecar; the semantic extra adds an optional local embedding upgrade:
206
206
 
207
207
  ```bash
208
- python -m pip install 'atmem[semantic]==2.2.4'
208
+ python -m pip install 'atmem[semantic]==2.2.5'
209
209
  ```
210
210
 
211
211
  For repository development, install both workspace packages:
@@ -215,10 +215,10 @@ python -m pip install -e './packages/atbot[dev]' -e '.[dev]'
215
215
  atmem atbot setup
216
216
  ```
217
217
 
218
- The authority modules remain model-agnostic and do not import AtBot, but the
219
- AtMem distribution requires the separately packaged, exactly pinned AtBot
220
- companion. Consequently a complete 2.2 installation has AtBot's transitive
221
- dependencies even when the user selects AtMem's deterministic fallback.
218
+ The authority modules remain model-agnostic and do not import AtBot. The AtMem
219
+ distribution requires the separately packaged, exactly pinned AtBot companion,
220
+ whose built-in Ollama and OpenAI-compatible client uses only the Python standard
221
+ library. Framework SDKs enter the environment only through explicit extras.
222
222
 
223
223
  ## Integration boundaries
224
224
 
@@ -385,7 +385,7 @@ atmem control restore
385
385
  Existing 2.1 installations upgrade without starting a new migration:
386
386
 
387
387
  ```bash
388
- python -m pip install --upgrade atmem==2.2.4
388
+ python -m pip install --upgrade atmem==2.2.5
389
389
  atmem openclaw upgrade
390
390
  atmem control verify
391
391
  ```
@@ -531,7 +531,7 @@ npm test
531
531
  npm run smoke
532
532
  ```
533
533
 
534
- Current repository metadata is version **2.2.4**. Python and npm release
534
+ Current repository metadata is version **2.2.5**. Python and npm release
535
535
  versions are intentionally kept equal because the OpenClaw installer pins the
536
536
  matching bridge.
537
537
 
@@ -96,6 +96,7 @@ docs/releases/v2.2.1.md
96
96
  docs/releases/v2.2.2.md
97
97
  docs/releases/v2.2.3.md
98
98
  docs/releases/v2.2.4.md
99
+ docs/releases/v2.2.5.md
99
100
  integrations/openclaw/README.md
100
101
  integrations/openclaw/index.ts
101
102
  integrations/openclaw/openclaw.plugin.json
@@ -1,4 +1,4 @@
1
- atmem-atbot==0.1.0a3
1
+ atmem-atbot==0.1.0a4
2
2
 
3
3
  [atbot]
4
4
 
@@ -31,7 +31,7 @@ stored in GitHub.
31
31
  2. Run both Python suites and build both distributions locally.
32
32
  3. Push the reviewed changes.
33
33
  4. Create and push a tag matching `atbot-v<VERSION>`, for example
34
- `atbot-v0.1.0a3`.
34
+ `atbot-v0.1.0a4`.
35
35
  5. Approve the protected `pypi-atbot` environment deployment.
36
36
  6. Confirm `python -m pip install atmem-atbot==<VERSION>` installs an `atbot`
37
37
  command with the same version.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "product": "memory_control_plane",
3
- "version": "2.2.4",
3
+ "version": "2.2.5",
4
4
  "development_target": null,
5
5
  "release_status": "released",
6
6
  "engine": "model_agnostic",
@@ -8,7 +8,7 @@
8
8
  "intelligence_companion": {
9
9
  "package": "atbot",
10
10
  "distribution": "atmem-atbot",
11
- "pinned_version": "0.1.0a3",
11
+ "pinned_version": "0.1.0a4",
12
12
  "required_distribution_dependency": true,
13
13
  "separate_process": true,
14
14
  "loopback_protocol": "1",
@@ -2,8 +2,8 @@
2
2
 
3
3
  Updated: 1 September 2026
4
4
 
5
- Repository metadata and the matched OpenClaw bridge are version **2.2.4**.
6
- The required `atmem-atbot==0.1.0a3` companion is published separately and
5
+ Repository metadata and the matched OpenClaw bridge are version **2.2.5**.
6
+ The required `atmem-atbot==0.1.0a4` companion is published separately and
7
7
  installed automatically with AtMem.
8
8
 
9
9
  The release has four runtime boundaries:
@@ -42,10 +42,12 @@ The release has four runtime boundaries:
42
42
 
43
43
  ## Packaging and runtime status
44
44
 
45
- - `pyproject.toml` requires exactly `atmem-atbot==0.1.0a3`. The PyPI
45
+ - `pyproject.toml` requires exactly `atmem-atbot==0.1.0a4`. The PyPI
46
46
  distribution is `atmem-atbot`; its Python import and command remain `atbot`.
47
47
  - AtBot source lives under `packages/atbot`; it is a separately released
48
48
  distribution and process and does not own canonical storage.
49
+ - AtBot's built-in Ollama and OpenAI-compatible provider uses the standard
50
+ library and adds no model-SDK dependency to a default AtMem install.
49
51
  - A clean 2.2 installation resolves the published companion automatically.
50
52
  Repository development installs both packages explicitly with editable
51
53
  installs.
@@ -74,8 +76,8 @@ The release has four runtime boundaries:
74
76
 
75
77
  ## Upgrade and support status
76
78
 
77
- - The release workflow creates persisted data with public AtMem 2.1.0 and
78
- 2.2.3, upgrades each environment to 2.2.4, and verifies record identity, recall, audit
79
+ - The release workflow creates persisted data with public AtMem 2.1.0, 2.2.3,
80
+ and 2.2.4, upgrades each environment to 2.2.5, and verifies record identity, recall, audit
79
81
  integrity, control migration identity, candidate retention, schema migration,
80
82
  and automatic vector-sidecar creation before publication.
81
83
  - Existing OpenClaw installations upgrade the bridge with
@@ -9,7 +9,7 @@
9
9
  ## Install
10
10
 
11
11
  ```bash
12
- python -m pip install --upgrade atmem==2.2.4
12
+ python -m pip install --upgrade atmem==2.2.5
13
13
  atmem --version
14
14
  atmem openclaw install
15
15
  ```
@@ -22,7 +22,7 @@ Upgrade AtMem first, then refresh the existing bridge without creating a new
22
22
  migration or changing the current shadow/active mode:
23
23
 
24
24
  ```bash
25
- python -m pip install --upgrade atmem==2.2.4
25
+ python -m pip install --upgrade atmem==2.2.5
26
26
  atmem openclaw upgrade
27
27
  atmem control verify
28
28
  atmem atbot doctor
@@ -0,0 +1,34 @@
1
+ # AtMem 2.2.5 — SDK-neutral default install
2
+
3
+ AtMem 2.2.5 supersedes 2.2.4 after final public-install verification found that
4
+ AtBot's default Pydantic AI extra could upgrade OpenAI and Jiter across a shared
5
+ agent environment. The default install is now SDK-neutral.
6
+
7
+ ## Fixed
8
+
9
+ - AtBot `0.1.0a4` uses its built-in standard-library OpenAI-compatible client
10
+ for local Ollama and compatible hosted endpoints.
11
+ - Installing or upgrading base AtMem no longer installs or upgrades Pydantic
12
+ AI, OpenAI, or Jiter.
13
+ - Pydantic AI support remains available explicitly through
14
+ `atmem[pydantic-ai]`; LangChain/LangGraph support remains available through
15
+ `atmem[langgraph]` or `atmem[frameworks]`.
16
+ - OpenClaw 2026.8.1 support, stale-dashboard replacement, idempotent bridge
17
+ upgrades, and the 2.1.0/2.2.3 persisted-state upgrade gates from 2.2.4 remain
18
+ intact.
19
+
20
+ ## Upgrade
21
+
22
+ ```bash
23
+ python -m pip install --upgrade atmem==2.2.5
24
+ atmem openclaw upgrade
25
+ atmem control verify
26
+ ```
27
+
28
+ Existing memory, evidence, configuration, restore state, and provider settings
29
+ are retained.
30
+
31
+ If 2.2.4 was installed into a shared environment before this superseding patch,
32
+ run `python -m pip check`. Pydantic AI/OpenAI packages left behind by pip are no
33
+ longer AtMem requirements and may be reconciled according to the other agent
34
+ packages in that environment.
@@ -5,11 +5,11 @@ This npm package is the host bridge for AtMem. It is not a standalone memory eng
5
5
  Use the Python-owned installer:
6
6
 
7
7
  ```bash
8
- python -m pip install --upgrade atmem==2.2.4
8
+ python -m pip install --upgrade atmem==2.2.5
9
9
  atmem openclaw install
10
10
  ```
11
11
 
12
- The installer pins `openclaw-memory-atmem@2.2.4`, binds the exact `atmem` executable, copies existing OpenClaw memory, configures shadow mode, restarts the gateway and verifies the loaded plugin. Direct npm installation cannot perform or prove those steps.
12
+ The installer pins `openclaw-memory-atmem@2.2.5`, binds the exact `atmem` executable, copies existing OpenClaw memory, configures shadow mode, restarts the gateway and verifies the loaded plugin. Direct npm installation cannot perform or prove those steps.
13
13
 
14
14
  Existing AtMem 2.1 users run `atmem openclaw upgrade` after upgrading the Python
15
15
  package. This preserves the current memory mode and migration, verifies the new
@@ -2,7 +2,7 @@
2
2
  "id": "memory-atmem",
3
3
  "name": "Memory (atmem)",
4
4
  "description": "OpenClaw bridge installed and managed by the AtMem memory control plane.",
5
- "version": "2.2.4",
5
+ "version": "2.2.5",
6
6
  "commandAliases": ["memory-atmem"],
7
7
  "activation": {
8
8
  "onStartup": true,
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "openclaw-memory-atmem",
3
- "version": "2.2.4",
3
+ "version": "2.2.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "openclaw-memory-atmem",
9
- "version": "2.2.4",
9
+ "version": "2.2.5",
10
10
  "license": "Apache-2.0",
11
11
  "devDependencies": {
12
12
  "@types/node": "^22.20.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-memory-atmem",
3
- "version": "2.2.4",
3
+ "version": "2.2.5",
4
4
  "description": "OpenClaw Agent Black Box and memory control-plane bridge for AtMem",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -166,7 +166,7 @@ export class AtmemClient {
166
166
  capabilities: {},
167
167
  clientInfo: {
168
168
  name: "openclaw-memory-atmem",
169
- version: "2.2.4",
169
+ version: "2.2.5",
170
170
  },
171
171
  });
172
172
  this.notify("notifications/initialized", {});
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atmem"
7
- version = "2.2.4"
7
+ version = "2.2.5"
8
8
  description = "Host-neutral Agent Black Box and reversible memory control plane."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -27,7 +27,7 @@ classifiers = [
27
27
  "Topic :: Software Development :: Libraries :: Python Modules",
28
28
  ]
29
29
  dependencies = [
30
- "atmem-atbot==0.1.0a3",
30
+ "atmem-atbot==0.1.0a4",
31
31
  ]
32
32
 
33
33
  [project.optional-dependencies]
@@ -35,7 +35,7 @@ def test_openclaw_upgrade_preserves_mode_and_reports_verified_bridge(
35
35
  "format": "atmem-openclaw-bridge-refresh-v1",
36
36
  "refreshed": True,
37
37
  "previous_bridge_version": "2.1.0",
38
- "bridge_version": "2.2.4",
38
+ "bridge_version": "2.2.5",
39
39
  "mode": "active",
40
40
  "gateway_verified": True,
41
41
  "test_flight": {
@@ -51,7 +51,7 @@ def test_openclaw_upgrade_preserves_mode_and_reports_verified_bridge(
51
51
  "format": "atmem-dashboard-upgrade-v1",
52
52
  "was_running": True,
53
53
  "restarted": True,
54
- "atmem_version": "2.2.4",
54
+ "atmem_version": "2.2.5",
55
55
  },
56
56
  )
57
57
  monkeypatch.setattr(sys, "argv", ["atmem", "openclaw", "upgrade", "--json"])
@@ -59,7 +59,7 @@ def test_openclaw_upgrade_preserves_mode_and_reports_verified_bridge(
59
59
  cli.main()
60
60
 
61
61
  result = json.loads(capsys.readouterr().out)
62
- assert result["bridge_version"] == "2.2.4"
62
+ assert result["bridge_version"] == "2.2.5"
63
63
  assert result["mode"] == "active"
64
64
  assert result["test_flight"]["valid"] is True
65
65
  assert result["dashboard"]["restarted"] is True
@@ -510,7 +510,7 @@ def test_dashboard_is_direct_on_loopback_and_uses_csrf_for_mutations(
510
510
  "refresh_openclaw_bridge_and_test",
511
511
  lambda **_kwargs: {
512
512
  "refreshed": True,
513
- "bridge_version": "2.2.4",
513
+ "bridge_version": "2.2.5",
514
514
  "test_flight": {
515
515
  "run_id": "fresh-run",
516
516
  "verdict": "completed_successfully",
@@ -531,7 +531,7 @@ def test_dashboard_is_direct_on_loopback_and_uses_csrf_for_mutations(
531
531
  "openclaw_bridge_refresh_status",
532
532
  lambda: {
533
533
  "available": True,
534
- "pinned_version": "2.2.4",
534
+ "pinned_version": "2.2.5",
535
535
  "installed_version": "1.0.0",
536
536
  },
537
537
  )
@@ -552,7 +552,7 @@ def test_dashboard_is_direct_on_loopback_and_uses_csrf_for_mutations(
552
552
  assert opener.open(f"{base}/api/status").status == 200
553
553
  product = json.loads(opener.open(f"{base}/api/product").read())
554
554
  assert product["atmem_pip_version"]
555
- assert product["atmem_npm_version"] == "2.2.4"
555
+ assert product["atmem_npm_version"] == "2.2.5"
556
556
  assert product["x_url"] == "https://x.com/AtMemX"
557
557
  profiles = json.loads(opener.open(f"{base}/api/companion/profiles").read())
558
558
  assert {"local-ollama", "openai", "anthropic"} <= set(profiles["providers"])