atmem 2.2.1__tar.gz → 2.2.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.
- {atmem-2.2.1/atmem.egg-info → atmem-2.2.3}/PKG-INFO +12 -12
- {atmem-2.2.1 → atmem-2.2.3}/README.md +10 -10
- {atmem-2.2.1 → atmem-2.2.3}/atmem/adapters/pydantic_ai.py +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/atbot_service.py +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/atmem/mcp/server.py +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/atmem/openclaw_install.py +1 -1
- {atmem-2.2.1 → atmem-2.2.3/atmem.egg-info}/PKG-INFO +12 -12
- {atmem-2.2.1 → atmem-2.2.3}/atmem.egg-info/SOURCES.txt +2 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem.egg-info/requires.txt +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/docs/atbot-release.md +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/docs/capabilities.json +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/docs/current-status.md +4 -4
- {atmem-2.2.1 → atmem-2.2.3}/docs/openclaw-setup.md +2 -2
- atmem-2.2.3/docs/releases/v2.2.2.md +28 -0
- atmem-2.2.3/docs/releases/v2.2.3.md +32 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/README.md +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/openclaw.plugin.json +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/package-lock.json +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/package.json +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/src/rpc-client.ts +1 -1
- {atmem-2.2.1 → atmem-2.2.3}/pyproject.toml +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_cli_guidance.py +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_control_plane.py +3 -3
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_documentation.py +5 -2
- {atmem-2.2.1 → atmem-2.2.3}/tools/smoke_installed_package.py +2 -2
- {atmem-2.2.1 → atmem-2.2.3}/tools/smoke_upgrade_from_2_1.py +3 -3
- {atmem-2.2.1 → atmem-2.2.3}/LICENSE +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/MANIFEST.in +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/adapters/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/adapters/base.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/adapters/langgraph.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/cli.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/contracts/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/contracts/models.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/contracts/versions.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/assets/app.css +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/assets/app.html +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/assets/app.js +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/assets/atmem.jpg +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/atbot_companion.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/blackbox.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/compat.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/evidence.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/hosts.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/manager.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/models.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/openclaw_native.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/openclaw_topology.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/server.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/state.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/store.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/topology.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/ui.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/verify.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/control/web.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/core/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/core/canonical.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/core/fact_keys.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/core/keys.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/core/policy.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/core/storage.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/dashboard_daemon.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/extract/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/extract/rules.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/graph.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/investigate.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/maintenance.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/mcp/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/media.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/memory.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/retrieve/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/retrieve/rank.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/v1/capabilities.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/v1/context-package.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/v1/memory-proposal.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/v1/recall-request.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/v1/scope.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/schemas/v1/source-capture.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/semantic/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/semantic/index.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/semantic/providers.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/store/__init__.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem/store/sqlite.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem.egg-info/dependency_links.txt +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem.egg-info/entry_points.txt +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/atmem.egg-info/top_level.txt +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/agent-blackbox.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/audit-log-spec.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/audit-search.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/auditing-guide.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/control-plane.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/dashboard-design-language.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/data-storage-and-backup.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/framework-adapters.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/generic-adapter.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/integration-guide.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/multimodal-observations.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/releases/v1.0.0.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/releases/v2.0.0.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/releases/v2.0.1.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/releases/v2.1.0.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/releases/v2.2.0.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/releases/v2.2.1.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/saas-integration.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/docs/semantic-search.md +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/index.ts +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/src/setup.ts +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/src/types.ts +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/test/hooks.mjs +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/test/setup.mjs +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/test/smoke.mjs +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/integrations/openclaw/tsconfig.json +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/setup.cfg +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_atbot_companion.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_atbot_service.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_auditability.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_blackbox.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_cli.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_contracts_v1.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_control_evidence.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_control_verify.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_dashboard_daemon.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_encryption.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_extract.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_framework_adapters.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_generic_control.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_graph.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_host_adapter.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_layers.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_maintenance.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_mcp.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_media_observations.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_memory.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_openclaw_control.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_openclaw_install.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_openclaw_topology.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_policy.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_recall_evidence.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_restore_receipt.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_retrieve.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_semantic_search.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tests/test_store_transactions.py +0 -0
- {atmem-2.2.1 → atmem-2.2.3}/tools/verify_audit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atmem
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
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.
|
|
27
|
+
Requires-Dist: atmem-atbot==0.1.0a2
|
|
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
|
-
[](./docs/releases/v2.2.3.md)
|
|
48
48
|
[](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.
|
|
62
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
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.
|
|
90
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
91
91
|
atmem openclaw upgrade
|
|
92
92
|
atmem control verify
|
|
93
93
|
```
|
|
@@ -95,7 +95,7 @@ atmem control verify
|
|
|
95
95
|
#### Pydantic AI — native capability
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
python -m pip install 'atmem[pydantic-ai]==2.2.
|
|
98
|
+
python -m pip install 'atmem[pydantic-ai]==2.2.3'
|
|
99
99
|
atmem control shadow --host generic --memory-db ~/.atmem/memories.db
|
|
100
100
|
```
|
|
101
101
|
|
|
@@ -119,7 +119,7 @@ agent = Agent("openai:gpt-5-mini", capabilities=[memory])
|
|
|
119
119
|
#### LangChain/LangGraph — native middleware
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
python -m pip install 'atmem[langgraph]==2.2.
|
|
122
|
+
python -m pip install 'atmem[langgraph]==2.2.3'
|
|
123
123
|
atmem control shadow --host generic --memory-db ~/.atmem/memories.db
|
|
124
124
|
```
|
|
125
125
|
|
|
@@ -163,7 +163,7 @@ If AtBot or its selected model is unavailable, AtMem continues with safe local
|
|
|
163
163
|
capture and hybrid ranking. Memory authority and agent operation do not depend
|
|
164
164
|
on a hosted model.
|
|
165
165
|
|
|
166
|
-
> **Release status:** this repository describes **AtMem 2.2.
|
|
166
|
+
> **Release status:** this repository describes **AtMem 2.2.3**. AtBot is a
|
|
167
167
|
> separately packaged, headless component installed and managed by AtMem; it is
|
|
168
168
|
> not an independent agent or a second memory authority.
|
|
169
169
|
|
|
@@ -182,7 +182,7 @@ and restores it exactly.
|
|
|
182
182
|
## Installation details
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
|
-
python -m pip install atmem==2.2.
|
|
185
|
+
python -m pip install atmem==2.2.3
|
|
186
186
|
atmem --version
|
|
187
187
|
```
|
|
188
188
|
|
|
@@ -190,7 +190,7 @@ AtMem requires Python 3.10 or newer. It always creates a dependency-free local
|
|
|
190
190
|
vector sidecar; the semantic extra adds an optional local embedding upgrade:
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
|
-
python -m pip install 'atmem[semantic]==2.2.
|
|
193
|
+
python -m pip install 'atmem[semantic]==2.2.3'
|
|
194
194
|
```
|
|
195
195
|
|
|
196
196
|
For repository development, install both workspace packages:
|
|
@@ -370,7 +370,7 @@ atmem control restore
|
|
|
370
370
|
Existing 2.1 installations upgrade without starting a new migration:
|
|
371
371
|
|
|
372
372
|
```bash
|
|
373
|
-
python -m pip install --upgrade atmem==2.2.
|
|
373
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
374
374
|
atmem openclaw upgrade
|
|
375
375
|
atmem control verify
|
|
376
376
|
```
|
|
@@ -516,7 +516,7 @@ npm test
|
|
|
516
516
|
npm run smoke
|
|
517
517
|
```
|
|
518
518
|
|
|
519
|
-
Current repository metadata is version **2.2.
|
|
519
|
+
Current repository metadata is version **2.2.3**. Python and npm release
|
|
520
520
|
versions are intentionally kept equal because the OpenClaw installer pins the
|
|
521
521
|
matching bridge.
|
|
522
522
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AtMem
|
|
2
2
|
|
|
3
|
-
[](./docs/releases/v2.2.3.md)
|
|
4
4
|
[](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.
|
|
18
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
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.
|
|
46
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
47
47
|
atmem openclaw upgrade
|
|
48
48
|
atmem control verify
|
|
49
49
|
```
|
|
@@ -51,7 +51,7 @@ atmem control verify
|
|
|
51
51
|
#### Pydantic AI — native capability
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
python -m pip install 'atmem[pydantic-ai]==2.2.
|
|
54
|
+
python -m pip install 'atmem[pydantic-ai]==2.2.3'
|
|
55
55
|
atmem control shadow --host generic --memory-db ~/.atmem/memories.db
|
|
56
56
|
```
|
|
57
57
|
|
|
@@ -75,7 +75,7 @@ agent = Agent("openai:gpt-5-mini", capabilities=[memory])
|
|
|
75
75
|
#### LangChain/LangGraph — native middleware
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
|
-
python -m pip install 'atmem[langgraph]==2.2.
|
|
78
|
+
python -m pip install 'atmem[langgraph]==2.2.3'
|
|
79
79
|
atmem control shadow --host generic --memory-db ~/.atmem/memories.db
|
|
80
80
|
```
|
|
81
81
|
|
|
@@ -119,7 +119,7 @@ If AtBot or its selected model is unavailable, AtMem continues with safe local
|
|
|
119
119
|
capture and hybrid ranking. Memory authority and agent operation do not depend
|
|
120
120
|
on a hosted model.
|
|
121
121
|
|
|
122
|
-
> **Release status:** this repository describes **AtMem 2.2.
|
|
122
|
+
> **Release status:** this repository describes **AtMem 2.2.3**. AtBot is a
|
|
123
123
|
> separately packaged, headless component installed and managed by AtMem; it is
|
|
124
124
|
> not an independent agent or a second memory authority.
|
|
125
125
|
|
|
@@ -138,7 +138,7 @@ and restores it exactly.
|
|
|
138
138
|
## Installation details
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
python -m pip install atmem==2.2.
|
|
141
|
+
python -m pip install atmem==2.2.3
|
|
142
142
|
atmem --version
|
|
143
143
|
```
|
|
144
144
|
|
|
@@ -146,7 +146,7 @@ AtMem requires Python 3.10 or newer. It always creates a dependency-free local
|
|
|
146
146
|
vector sidecar; the semantic extra adds an optional local embedding upgrade:
|
|
147
147
|
|
|
148
148
|
```bash
|
|
149
|
-
python -m pip install 'atmem[semantic]==2.2.
|
|
149
|
+
python -m pip install 'atmem[semantic]==2.2.3'
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
For repository development, install both workspace packages:
|
|
@@ -326,7 +326,7 @@ atmem control restore
|
|
|
326
326
|
Existing 2.1 installations upgrade without starting a new migration:
|
|
327
327
|
|
|
328
328
|
```bash
|
|
329
|
-
python -m pip install --upgrade atmem==2.2.
|
|
329
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
330
330
|
atmem openclaw upgrade
|
|
331
331
|
atmem control verify
|
|
332
332
|
```
|
|
@@ -472,7 +472,7 @@ npm test
|
|
|
472
472
|
npm run smoke
|
|
473
473
|
```
|
|
474
474
|
|
|
475
|
-
Current repository metadata is version **2.2.
|
|
475
|
+
Current repository metadata is version **2.2.3**. Python and npm release
|
|
476
476
|
versions are intentionally kept equal because the OpenClaw installer pins the
|
|
477
477
|
matching bridge.
|
|
478
478
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Pydantic AI
|
|
1
|
+
"""Pydantic AI Hooks adapter for automatic governed memory."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
@@ -54,7 +54,7 @@ class PydanticAIAtMemAdapter:
|
|
|
54
54
|
if governed:
|
|
55
55
|
messages.append(ModelRequest(parts=[UserPromptPart(governed)]))
|
|
56
56
|
model_name = str(
|
|
57
|
-
request_context
|
|
57
|
+
getattr(request_context, "model_id", None)
|
|
58
58
|
or getattr(request_context.model, "model_name", None)
|
|
59
59
|
or getattr(request_context.model, "model_id", None)
|
|
60
60
|
or "unknown"
|
|
@@ -16,7 +16,7 @@ from atmem.control.manager import DEFAULT_STATE_PATH, DEFAULT_CONTROL_ROOT
|
|
|
16
16
|
|
|
17
17
|
OPENCLAW_PLUGIN_ID = "memory-atmem"
|
|
18
18
|
OPENCLAW_PLUGIN_PACKAGE = "openclaw-memory-atmem"
|
|
19
|
-
OPENCLAW_PLUGIN_VERSION = "2.2.
|
|
19
|
+
OPENCLAW_PLUGIN_VERSION = "2.2.3"
|
|
20
20
|
_CONFIG_KEY = "plugins.entries.memory-atmem"
|
|
21
21
|
|
|
22
22
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atmem
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
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.
|
|
27
|
+
Requires-Dist: atmem-atbot==0.1.0a2
|
|
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
|
-
[](./docs/releases/v2.2.3.md)
|
|
48
48
|
[](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.
|
|
62
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
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.
|
|
90
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
91
91
|
atmem openclaw upgrade
|
|
92
92
|
atmem control verify
|
|
93
93
|
```
|
|
@@ -95,7 +95,7 @@ atmem control verify
|
|
|
95
95
|
#### Pydantic AI — native capability
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
python -m pip install 'atmem[pydantic-ai]==2.2.
|
|
98
|
+
python -m pip install 'atmem[pydantic-ai]==2.2.3'
|
|
99
99
|
atmem control shadow --host generic --memory-db ~/.atmem/memories.db
|
|
100
100
|
```
|
|
101
101
|
|
|
@@ -119,7 +119,7 @@ agent = Agent("openai:gpt-5-mini", capabilities=[memory])
|
|
|
119
119
|
#### LangChain/LangGraph — native middleware
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
python -m pip install 'atmem[langgraph]==2.2.
|
|
122
|
+
python -m pip install 'atmem[langgraph]==2.2.3'
|
|
123
123
|
atmem control shadow --host generic --memory-db ~/.atmem/memories.db
|
|
124
124
|
```
|
|
125
125
|
|
|
@@ -163,7 +163,7 @@ If AtBot or its selected model is unavailable, AtMem continues with safe local
|
|
|
163
163
|
capture and hybrid ranking. Memory authority and agent operation do not depend
|
|
164
164
|
on a hosted model.
|
|
165
165
|
|
|
166
|
-
> **Release status:** this repository describes **AtMem 2.2.
|
|
166
|
+
> **Release status:** this repository describes **AtMem 2.2.3**. AtBot is a
|
|
167
167
|
> separately packaged, headless component installed and managed by AtMem; it is
|
|
168
168
|
> not an independent agent or a second memory authority.
|
|
169
169
|
|
|
@@ -182,7 +182,7 @@ and restores it exactly.
|
|
|
182
182
|
## Installation details
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
|
-
python -m pip install atmem==2.2.
|
|
185
|
+
python -m pip install atmem==2.2.3
|
|
186
186
|
atmem --version
|
|
187
187
|
```
|
|
188
188
|
|
|
@@ -190,7 +190,7 @@ AtMem requires Python 3.10 or newer. It always creates a dependency-free local
|
|
|
190
190
|
vector sidecar; the semantic extra adds an optional local embedding upgrade:
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
|
-
python -m pip install 'atmem[semantic]==2.2.
|
|
193
|
+
python -m pip install 'atmem[semantic]==2.2.3'
|
|
194
194
|
```
|
|
195
195
|
|
|
196
196
|
For repository development, install both workspace packages:
|
|
@@ -370,7 +370,7 @@ atmem control restore
|
|
|
370
370
|
Existing 2.1 installations upgrade without starting a new migration:
|
|
371
371
|
|
|
372
372
|
```bash
|
|
373
|
-
python -m pip install --upgrade atmem==2.2.
|
|
373
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
374
374
|
atmem openclaw upgrade
|
|
375
375
|
atmem control verify
|
|
376
376
|
```
|
|
@@ -516,7 +516,7 @@ npm test
|
|
|
516
516
|
npm run smoke
|
|
517
517
|
```
|
|
518
518
|
|
|
519
|
-
Current repository metadata is version **2.2.
|
|
519
|
+
Current repository metadata is version **2.2.3**. Python and npm release
|
|
520
520
|
versions are intentionally kept equal because the OpenClaw installer pins the
|
|
521
521
|
matching bridge.
|
|
522
522
|
|
|
@@ -93,6 +93,8 @@ docs/releases/v2.0.1.md
|
|
|
93
93
|
docs/releases/v2.1.0.md
|
|
94
94
|
docs/releases/v2.2.0.md
|
|
95
95
|
docs/releases/v2.2.1.md
|
|
96
|
+
docs/releases/v2.2.2.md
|
|
97
|
+
docs/releases/v2.2.3.md
|
|
96
98
|
integrations/openclaw/README.md
|
|
97
99
|
integrations/openclaw/index.ts
|
|
98
100
|
integrations/openclaw/openclaw.plugin.json
|
|
@@ -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.
|
|
34
|
+
`atbot-v0.1.0a2`.
|
|
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.
|
|
3
|
+
"version": "2.2.3",
|
|
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.
|
|
11
|
+
"pinned_version": "0.1.0a2",
|
|
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: 31 August 2026
|
|
4
4
|
|
|
5
|
-
Repository metadata and the matched OpenClaw bridge are version **2.2.
|
|
6
|
-
The required `atmem-atbot==0.1.
|
|
5
|
+
Repository metadata and the matched OpenClaw bridge are version **2.2.3**.
|
|
6
|
+
The required `atmem-atbot==0.1.0a2` companion is published separately and
|
|
7
7
|
installed automatically with AtMem.
|
|
8
8
|
|
|
9
9
|
The release has four runtime boundaries:
|
|
@@ -42,7 +42,7 @@ 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.
|
|
45
|
+
- `pyproject.toml` requires exactly `atmem-atbot==0.1.0a2`. 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.
|
|
@@ -75,7 +75,7 @@ The release has four runtime boundaries:
|
|
|
75
75
|
## Upgrade and support status
|
|
76
76
|
|
|
77
77
|
- The release workflow creates persisted data with public AtMem 2.1.0, upgrades
|
|
78
|
-
the same environment to 2.2.
|
|
78
|
+
the same environment to 2.2.3, and verifies record identity, recall, audit
|
|
79
79
|
integrity, control migration identity, candidate retention, schema migration,
|
|
80
80
|
and automatic vector-sidecar creation before publication.
|
|
81
81
|
- 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.
|
|
12
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
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.
|
|
25
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
26
26
|
atmem openclaw upgrade
|
|
27
27
|
atmem control verify
|
|
28
28
|
atmem atbot doctor
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# AtMem 2.2.2 — unpublished release candidate
|
|
2
|
+
|
|
3
|
+
The 2.2.2 release gate detected a Pydantic AI 1.x adapter incompatibility before
|
|
4
|
+
AtMem, the OpenClaw npm bridge, or a GitHub release was published. The corrected
|
|
5
|
+
package was released as 2.2.3. Do not install or reference 2.2.2.
|
|
6
|
+
|
|
7
|
+
## Candidate changes
|
|
8
|
+
|
|
9
|
+
- AtBot is updated to `atmem-atbot==0.1.0a2`.
|
|
10
|
+
- The companion now stays on Pydantic AI 1.x, OpenAI SDK 2.x, and the compatible
|
|
11
|
+
Jiter range used by the supported LangChain, OpenAI Agents SDK, LiteLLM,
|
|
12
|
+
LlamaIndex, and Instructor installations.
|
|
13
|
+
- Installing or upgrading AtMem no longer selects OpenAI SDK 3.x merely because
|
|
14
|
+
it is the newest release on PyPI.
|
|
15
|
+
- The documented `atmem openclaw upgrade` command remained available.
|
|
16
|
+
|
|
17
|
+
## Upgrade
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
21
|
+
atmem openclaw upgrade
|
|
22
|
+
atmem control verify
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Existing 2.1.x and 2.2.x databases, record IDs, audit chains, memory mode,
|
|
26
|
+
OpenClaw configuration, and AtBot provider settings are retained.
|
|
27
|
+
|
|
28
|
+
The failed gate and correction are documented in the 2.2.3 release notes.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# AtMem 2.2.3 — dependency-safe upgrades
|
|
2
|
+
|
|
3
|
+
AtMem 2.2.3 keeps automatic AtBot installation compatible with shared Python
|
|
4
|
+
agent environments and supports both Pydantic AI 1.x and 2.x request contexts.
|
|
5
|
+
|
|
6
|
+
## Fixed
|
|
7
|
+
|
|
8
|
+
- AtMem installs the published `atmem-atbot==0.1.0a2` companion.
|
|
9
|
+
- AtBot stays on Pydantic AI 1.x, OpenAI SDK 2.x, and Jiter below 0.14 instead
|
|
10
|
+
of upgrading a shared environment across incompatible major versions.
|
|
11
|
+
- The native Pydantic AI adapter reads model identity safely across both the
|
|
12
|
+
1.x and 2.x `ModelRequestContext` shapes.
|
|
13
|
+
- The documented `atmem openclaw upgrade` command remains available and the
|
|
14
|
+
matched OpenClaw bridge version is 2.2.3.
|
|
15
|
+
|
|
16
|
+
## Upgrade
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
20
|
+
atmem openclaw upgrade
|
|
21
|
+
atmem control verify
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Existing 2.1.x and 2.2.x databases, record IDs, audit chains, memory mode,
|
|
25
|
+
OpenClaw configuration, and AtBot provider settings are retained.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
The release gate covers Python 3.10 through 3.13, Pydantic AI 1.x and 2.x
|
|
30
|
+
adapter behavior, clean-wheel dependency consistency, the 2.1.0 in-place
|
|
31
|
+
upgrade drill, AtBot packaging, and the OpenClaw typecheck, build, test, and
|
|
32
|
+
smoke suites.
|
|
@@ -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.
|
|
8
|
+
python -m pip install --upgrade atmem==2.2.3
|
|
9
9
|
atmem openclaw install
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
The installer pins `openclaw-memory-atmem@2.2.
|
|
12
|
+
The installer pins `openclaw-memory-atmem@2.2.3`, 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
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-memory-atmem",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "openclaw-memory-atmem",
|
|
9
|
-
"version": "2.2.
|
|
9
|
+
"version": "2.2.3",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@types/node": "^22.20.1",
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "atmem"
|
|
7
|
-
version = "2.2.
|
|
7
|
+
version = "2.2.3"
|
|
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.
|
|
30
|
+
"atmem-atbot==0.1.0a2",
|
|
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.
|
|
38
|
+
"bridge_version": "2.2.3",
|
|
39
39
|
"mode": "active",
|
|
40
40
|
"gateway_verified": True,
|
|
41
41
|
"test_flight": {
|
|
@@ -49,7 +49,7 @@ def test_openclaw_upgrade_preserves_mode_and_reports_verified_bridge(
|
|
|
49
49
|
cli.main()
|
|
50
50
|
|
|
51
51
|
result = json.loads(capsys.readouterr().out)
|
|
52
|
-
assert result["bridge_version"] == "2.2.
|
|
52
|
+
assert result["bridge_version"] == "2.2.3"
|
|
53
53
|
assert result["mode"] == "active"
|
|
54
54
|
assert result["test_flight"]["valid"] is True
|
|
55
55
|
|
|
@@ -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.
|
|
513
|
+
"bridge_version": "2.2.3",
|
|
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.
|
|
534
|
+
"pinned_version": "2.2.3",
|
|
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.
|
|
555
|
+
assert product["atmem_npm_version"] == "2.2.3"
|
|
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"])
|
|
@@ -63,9 +63,9 @@ def test_readme_puts_supported_quick_starts_front_and_center() -> None:
|
|
|
63
63
|
assert "atmem atbot setup" in opening
|
|
64
64
|
assert "atmem openclaw install" in opening
|
|
65
65
|
assert "atmem openclaw upgrade" in opening
|
|
66
|
-
assert "atmem[pydantic-ai]==2.2.
|
|
66
|
+
assert "atmem[pydantic-ai]==2.2.3" in opening
|
|
67
67
|
assert "PydanticAIAtMemAdapter" in opening
|
|
68
|
-
assert "atmem[langgraph]==2.2.
|
|
68
|
+
assert "atmem[langgraph]==2.2.3" in opening
|
|
69
69
|
assert "create_langgraph_middleware" in opening
|
|
70
70
|
assert "atmem control activate" in opening
|
|
71
71
|
|
|
@@ -89,6 +89,9 @@ def test_development_docs_match_companion_packaging() -> None:
|
|
|
89
89
|
|
|
90
90
|
assert 'name = "atmem-atbot"' in companion_metadata
|
|
91
91
|
assert f'"atmem-atbot=={companion_version}"' in root_metadata
|
|
92
|
+
assert '"pydantic-ai-slim[openai]>=1,<2"' in companion_metadata
|
|
93
|
+
assert '"openai>=2.29,<3"' in companion_metadata
|
|
94
|
+
assert '"jiter>=0.10,<0.14"' in companion_metadata
|
|
92
95
|
assert companion["distribution"] == "atmem-atbot"
|
|
93
96
|
assert companion["pinned_version"] == companion_version
|
|
94
97
|
assert companion["required_distribution_dependency"] is True
|
|
@@ -21,7 +21,7 @@ def json_run(*args: str) -> object:
|
|
|
21
21
|
|
|
22
22
|
def main() -> None:
|
|
23
23
|
distribution = importlib.metadata.distribution("atmem")
|
|
24
|
-
assert distribution.version == "2.2.
|
|
24
|
+
assert distribution.version == "2.2.3"
|
|
25
25
|
scripts = {
|
|
26
26
|
entry.name: entry.value
|
|
27
27
|
for entry in distribution.entry_points
|
|
@@ -31,7 +31,7 @@ def main() -> None:
|
|
|
31
31
|
|
|
32
32
|
executable = Path(sys.executable).with_name("atmem")
|
|
33
33
|
assert executable.is_file()
|
|
34
|
-
assert "2.2.
|
|
34
|
+
assert "2.2.3" in run(str(executable), "--version").stdout
|
|
35
35
|
|
|
36
36
|
with tempfile.TemporaryDirectory(prefix="atmem-wheel-smoke-") as temp:
|
|
37
37
|
database = Path(temp) / "memory.db"
|
|
@@ -76,8 +76,8 @@ def create_fixture(root: Path) -> None:
|
|
|
76
76
|
|
|
77
77
|
def verify_upgrade(root: Path) -> None:
|
|
78
78
|
manifest = json.loads((root / "fixture.json").read_text(encoding="utf-8"))
|
|
79
|
-
assert importlib.metadata.version("atmem") == "2.2.
|
|
80
|
-
assert importlib.metadata.version("atmem-atbot") == "0.1.
|
|
79
|
+
assert importlib.metadata.version("atmem") == "2.2.3"
|
|
80
|
+
assert importlib.metadata.version("atmem-atbot") == "0.1.0a2"
|
|
81
81
|
|
|
82
82
|
database = root / "memory.db"
|
|
83
83
|
memory = Memory(database)
|
|
@@ -116,7 +116,7 @@ def verify_upgrade(root: Path) -> None:
|
|
|
116
116
|
"SELECT value FROM schema_meta WHERE key = 'schema_version'"
|
|
117
117
|
).fetchone()[0]
|
|
118
118
|
assert int(schema_version) == 4
|
|
119
|
-
print("AtMem 2.1.0 -> 2.2.
|
|
119
|
+
print("AtMem 2.1.0 -> 2.2.3 upgrade smoke test passed")
|
|
120
120
|
|
|
121
121
|
|
|
122
122
|
def main() -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|