Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.3.6"
".": "0.3.7"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 7
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-16b10d8d925b2c1df0fe680a52e26b5bd00b5596ada987449efb94e14b2cdf12.yml
openapi_spec_hash: a5250afd80882f6512fec221323835d1
config_hash: 07d66eb552f88851d5a622e4315d8d40
configured_endpoints: 10
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-8dd89565a380cced738b3a3db7958ea82f5039747c17e3301dbf9e0224c66aec.yml
openapi_spec_hash: dca9f914a8bee936565c21ac98316b2d
config_hash: 9bde077e7fec6b4fc6b5747ccb68227a
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 0.3.7 (2026-01-27)

Full Changelog: [v0.3.6...v0.3.7](https://github.com/evermemos/evermemos-python/compare/v0.3.6...v0.3.7)

### Features

* **api:** api update ([b5a5ad3](https://github.com/evermemos/evermemos-python/commit/b5a5ad30160d7b74918456a269d2be73feb173ba))
* **api:** api update ([ff8658d](https://github.com/evermemos/evermemos-python/commit/ff8658dbfa447af49ad0bf42ddf3a7bf84c5af08))


### Chores

* update SDK settings ([7846bc7](https://github.com/evermemos/evermemos-python/commit/7846bc750ca4ab190a39feeb9dfd096854618cb1))
* update SDK settings ([fa846b9](https://github.com/evermemos/evermemos-python/commit/fa846b9647c78fbd9b072b6d397b8c74bbdfa2d4))

## 0.3.6 (2026-01-26)

Full Changelog: [v0.3.6...v0.3.6](https://github.com/evermemos/evermemos-python/compare/v0.3.6...v0.3.6)
Expand Down
60 changes: 44 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ client = EverMemOS(
)

memory = client.v1.memories.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
print(memory.message)
```
Expand All @@ -62,10 +62,10 @@ client = AsyncEverMemOS(

async def main() -> None:
memory = await client.v1.memories.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
print(memory.message)

Expand Down Expand Up @@ -101,10 +101,10 @@ async def main() -> None:
http_client=DefaultAioHttpClient(),
) as client:
memory = await client.v1.memories.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
print(memory.message)

Expand All @@ -121,6 +121,34 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ

Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.

## Nested params

Nested parameters are dictionaries, typed using `TypedDict`, for example:

```python
from evermemos import EverMemOS

client = EverMemOS()

response = client.v1.memories.load(
conversation_meta={
"group_id": "chat_user_001_assistant",
"created_at": "2025-06-26T00:00:00Z",
"default_timezone": "UTC",
"description": "Conversation between user and assistant",
"name": "User Support Chat",
"scene": "assistant",
"scene_desc": {"description": "bar"},
"tags": ["support"],
"user_details": {
"user_001": "bar",
"robot_001": "bar",
},
},
)
print(response.conversation_meta)
```

## Handling errors

When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `evermemos.APIConnectionError` is raised.
Expand All @@ -138,10 +166,10 @@ client = EverMemOS()

try:
client.v1.memories.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
except evermemos.APIConnectionError as e:
print("The server could not be reached")
Expand Down Expand Up @@ -186,10 +214,10 @@ client = EverMemOS(

# Or, configure per-request:
client.with_options(max_retries=5).v1.memories.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
```

Expand All @@ -214,10 +242,10 @@ client = EverMemOS(

# Override per-request:
client.with_options(timeout=5.0).v1.memories.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
```

Expand Down Expand Up @@ -260,10 +288,10 @@ from evermemos import EverMemOS

client = EverMemOS()
response = client.v1.memories.with_raw_response.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
)
print(response.headers.get('X-My-Header'))

Expand All @@ -283,10 +311,10 @@ To stream the response body, use `.with_streaming_response` instead, which requi

```python
with client.v1.memories.with_streaming_response.create(
content="I prefer morning meetings, usually around 9am works best for me.",
content="Let's discuss the technical solution for the new feature today",
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_alice",
sender="user_001",
) as response:
print(response.headers.get("X-My-Header"))

Expand Down
34 changes: 32 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,19 @@ from evermemos.types.v1 import (
MemoryType,
Metadata,
MemoryCreateResponse,
MemoryListResponse,
MemoryDeleteResponse,
MemoryGetResponse,
MemoryLoadResponse,
MemorySearchResponse,
)
```

Methods:

- <code title="post /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">create</a>(\*\*<a href="src/evermemos/types/v1/memory_create_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memory_create_response.py">MemoryCreateResponse</a></code>
- <code title="get /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">list</a>() -> <a href="./src/evermemos/types/v1/memory_list_response.py">MemoryListResponse</a></code>
- <code title="delete /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">delete</a>(\*\*<a href="src/evermemos/types/v1/memory_delete_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memory_delete_response.py">MemoryDeleteResponse</a></code>
- <code title="get /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">get</a>() -> <a href="./src/evermemos/types/v1/memory_get_response.py">MemoryGetResponse</a></code>
- <code title="post /api/v1/memories/import">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">load</a>(\*\*<a href="src/evermemos/types/v1/memory_load_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memory_load_response.py">MemoryLoadResponse</a></code>
- <code title="get /api/v1/memories/search">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">search</a>() -> <a href="./src/evermemos/types/v1/memory_search_response.py">MemorySearchResponse</a></code>

### ConversationMeta
Expand All @@ -39,3 +41,31 @@ Methods:
- <code title="post /api/v1/memories/conversation-meta">client.v1.memories.conversation_meta.<a href="./src/evermemos/resources/v1/memories/conversation_meta.py">create</a>(\*\*<a href="src/evermemos/types/v1/memories/conversation_meta_create_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memories/conversation_meta_create_response.py">ConversationMetaCreateResponse</a></code>
- <code title="patch /api/v1/memories/conversation-meta">client.v1.memories.conversation_meta.<a href="./src/evermemos/resources/v1/memories/conversation_meta.py">update</a>(\*\*<a href="src/evermemos/types/v1/memories/conversation_meta_update_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memories/conversation_meta_update_response.py">ConversationMetaUpdateResponse</a></code>
- <code title="get /api/v1/memories/conversation-meta">client.v1.memories.conversation_meta.<a href="./src/evermemos/resources/v1/memories/conversation_meta.py">get</a>() -> <a href="./src/evermemos/types/v1/memories/conversation_meta_get_response.py">ConversationMetaGetResponse</a></code>

## GlobalUserProfile

### Custom

Types:

```python
from evermemos.types.v1.global_user_profile import CustomUpsertResponse
```

Methods:

- <code title="post /api/v1/global-user-profile/custom">client.v1.global_user_profile.custom.<a href="./src/evermemos/resources/v1/global_user_profile/custom.py">upsert</a>(\*\*<a href="src/evermemos/types/v1/global_user_profile/custom_upsert_params.py">params</a>) -> <a href="./src/evermemos/types/v1/global_user_profile/custom_upsert_response.py">CustomUpsertResponse</a></code>

## Stats

### Request

Types:

```python
from evermemos.types.v1.stats import RequestGetResponse
```

Methods:

- <code title="get /api/v1/stats/request">client.v1.stats.request.<a href="./src/evermemos/resources/v1/stats/request.py">get</a>(\*\*<a href="src/evermemos/types/v1/stats/request_get_params.py">params</a>) -> <a href="./src/evermemos/types/v1/stats/request_get_response.py">RequestGetResponse</a></code>
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "evermemos"
version = "0.3.6"
version = "0.3.7"
description = "The official Python library for the EverMemOS API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/evermemos/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "evermemos"
__version__ = "0.3.6" # x-release-please-version
__version__ = "0.3.7" # x-release-please-version
28 changes: 28 additions & 0 deletions src/evermemos/resources/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@
V1ResourceWithStreamingResponse,
AsyncV1ResourceWithStreamingResponse,
)
from .stats import (
StatsResource,
AsyncStatsResource,
StatsResourceWithRawResponse,
AsyncStatsResourceWithRawResponse,
StatsResourceWithStreamingResponse,
AsyncStatsResourceWithStreamingResponse,
)
from .memories import (
MemoriesResource,
AsyncMemoriesResource,
Expand All @@ -16,6 +24,14 @@
MemoriesResourceWithStreamingResponse,
AsyncMemoriesResourceWithStreamingResponse,
)
from .global_user_profile import (
GlobalUserProfileResource,
AsyncGlobalUserProfileResource,
GlobalUserProfileResourceWithRawResponse,
AsyncGlobalUserProfileResourceWithRawResponse,
GlobalUserProfileResourceWithStreamingResponse,
AsyncGlobalUserProfileResourceWithStreamingResponse,
)

__all__ = [
"MemoriesResource",
Expand All @@ -24,6 +40,18 @@
"AsyncMemoriesResourceWithRawResponse",
"MemoriesResourceWithStreamingResponse",
"AsyncMemoriesResourceWithStreamingResponse",
"GlobalUserProfileResource",
"AsyncGlobalUserProfileResource",
"GlobalUserProfileResourceWithRawResponse",
"AsyncGlobalUserProfileResourceWithRawResponse",
"GlobalUserProfileResourceWithStreamingResponse",
"AsyncGlobalUserProfileResourceWithStreamingResponse",
"StatsResource",
"AsyncStatsResource",
"StatsResourceWithRawResponse",
"AsyncStatsResourceWithRawResponse",
"StatsResourceWithStreamingResponse",
"AsyncStatsResourceWithStreamingResponse",
"V1Resource",
"AsyncV1Resource",
"V1ResourceWithRawResponse",
Expand Down
33 changes: 33 additions & 0 deletions src/evermemos/resources/v1/global_user_profile/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from .custom import (
CustomResource,
AsyncCustomResource,
CustomResourceWithRawResponse,
AsyncCustomResourceWithRawResponse,
CustomResourceWithStreamingResponse,
AsyncCustomResourceWithStreamingResponse,
)
from .global_user_profile import (
GlobalUserProfileResource,
AsyncGlobalUserProfileResource,
GlobalUserProfileResourceWithRawResponse,
AsyncGlobalUserProfileResourceWithRawResponse,
GlobalUserProfileResourceWithStreamingResponse,
AsyncGlobalUserProfileResourceWithStreamingResponse,
)

__all__ = [
"CustomResource",
"AsyncCustomResource",
"CustomResourceWithRawResponse",
"AsyncCustomResourceWithRawResponse",
"CustomResourceWithStreamingResponse",
"AsyncCustomResourceWithStreamingResponse",
"GlobalUserProfileResource",
"AsyncGlobalUserProfileResource",
"GlobalUserProfileResourceWithRawResponse",
"AsyncGlobalUserProfileResourceWithRawResponse",
"GlobalUserProfileResourceWithStreamingResponse",
"AsyncGlobalUserProfileResourceWithStreamingResponse",
]
Loading