From e2cc79c7b19cd8da12385d59bd6fcb7e83be6c84 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 28 Jan 2026 11:01:05 +0000
Subject: [PATCH 1/4] feat(api): api update
---
.github/workflows/publish-pypi.yml | 28 ---
.github/workflows/release-doctor.yml | 21 --
.release-please-manifest.json | 3 -
.stats.yml | 8 +-
CONTRIBUTING.md | 4 +-
README.md | 25 +--
api.md | 14 --
bin/check-release-environment | 21 --
pyproject.toml | 6 +-
release-please-config.json | 66 -------
src/evermemos/_version.py | 2 +-
src/evermemos/resources/v1/__init__.py | 14 --
.../v1/global_user_profile/__init__.py | 33 ----
.../v1/global_user_profile/custom.py | 185 ------------------
.../global_user_profile.py | 102 ----------
.../v1/memories/conversation_meta.py | 8 +-
.../resources/v1/memories/memories.py | 34 ++--
src/evermemos/resources/v1/stats/request.py | 12 +-
src/evermemos/resources/v1/stats/stats.py | 8 +-
src/evermemos/resources/v1/v1.py | 40 +---
.../types/v1/global_user_profile/__init__.py | 3 -
.../custom_upsert_params.py | 24 ---
.../custom_upsert_response.py | 23 ---
.../types/v1/memory_create_params.py | 7 +
.../types/v1/memory_create_response.py | 34 +---
.../types/v1/memory_delete_params.py | 6 +-
src/evermemos/types/v1/memory_get_response.py | 6 +-
.../types/v1/stats/request_get_params.py | 2 +-
.../v1/global_user_profile/__init__.py | 1 -
.../v1/global_user_profile/test_custom.py | 134 -------------
tests/api_resources/v1/test_memories.py | 6 +-
31 files changed, 87 insertions(+), 793 deletions(-)
delete mode 100644 .github/workflows/publish-pypi.yml
delete mode 100644 .github/workflows/release-doctor.yml
delete mode 100644 .release-please-manifest.json
delete mode 100644 bin/check-release-environment
delete mode 100644 release-please-config.json
delete mode 100644 src/evermemos/resources/v1/global_user_profile/__init__.py
delete mode 100644 src/evermemos/resources/v1/global_user_profile/custom.py
delete mode 100644 src/evermemos/resources/v1/global_user_profile/global_user_profile.py
delete mode 100644 src/evermemos/types/v1/global_user_profile/custom_upsert_params.py
delete mode 100644 src/evermemos/types/v1/global_user_profile/custom_upsert_response.py
delete mode 100644 tests/api_resources/v1/global_user_profile/__init__.py
delete mode 100644 tests/api_resources/v1/global_user_profile/test_custom.py
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
deleted file mode 100644
index 6fff56a..0000000
--- a/.github/workflows/publish-pypi.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# This workflow is triggered when a GitHub release is created.
-# It can also be run manually to re-publish to PyPI in case it failed for some reason.
-# You can run this workflow by navigating to https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml
-name: Publish PyPI
-on:
- workflow_dispatch:
-
- release:
- types: [published]
-
-jobs:
- publish:
- name: publish
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v6
-
- - name: Install uv
- uses: astral-sh/setup-uv@v5
- with:
- version: '0.9.13'
-
- - name: Publish to PyPI
- run: |
- bash ./bin/publish-pypi
- env:
- PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
deleted file mode 100644
index 73257f5..0000000
--- a/.github/workflows/release-doctor.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Release Doctor
-on:
- pull_request:
- branches:
- - main
- workflow_dispatch:
-
-jobs:
- release_doctor:
- name: release doctor
- runs-on: ubuntu-latest
- if: github.repository == 'evermemos/evermemos-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')
-
- steps:
- - uses: actions/checkout@v6
-
- - name: Check release environment
- run: |
- bash ./bin/check-release-environment
- env:
- PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
deleted file mode 100644
index 457d91e..0000000
--- a/.release-please-manifest.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- ".": "0.3.7"
-}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index f3dff34..fe48da6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-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
+configured_endpoints: 9
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-70486f52a522b1271f833cc3263dfe012c0ae7c0f1d520a18d45037cc9633511.yml
+openapi_spec_hash: 3b4ed62d5425b7d7c4313c731b9f4959
+config_hash: 49fa8adc2cd2a34ce9f1c66e45e03a17
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 315c632..e2e1e5a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -62,7 +62,7 @@ If you’d like to use the repository from source, you can either install from g
To install via git:
```sh
-$ pip install git+ssh://git@github.com/evermemos/evermemos-python.git
+$ pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git
```
Alternatively, you can build from source and install the wheel file:
@@ -120,7 +120,7 @@ the changes aren't made through the automated pipeline, you may want to make rel
### Publish with a GitHub workflow
-You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
+You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/EverMemOS-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
### Publish manually
diff --git a/README.md b/README.md
index 702d5d7..e151a42 100644
--- a/README.md
+++ b/README.md
@@ -16,10 +16,13 @@ The full API of this library can be found in [api.md](api.md).
## Installation
```sh
-# install from PyPI
-pip install evermemos
+# install from this staging repo
+pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git
```
+> [!NOTE]
+> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install evermemos`
+
## Usage
The full API of this library can be found in [api.md](api.md).
@@ -38,7 +41,7 @@ memory = client.v1.memories.create(
message_id="msg_001",
sender="user_001",
)
-print(memory.message)
+print(memory.request_id)
```
While you can provide an `api_key` keyword argument,
@@ -67,7 +70,7 @@ async def main() -> None:
message_id="msg_001",
sender="user_001",
)
- print(memory.message)
+ print(memory.request_id)
asyncio.run(main())
@@ -82,8 +85,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv
You can enable this by installing `aiohttp`:
```sh
-# install from PyPI
-pip install evermemos[aiohttp]
+# install from this staging repo
+pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git'
```
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
@@ -106,7 +109,7 @@ async def main() -> None:
message_id="msg_001",
sender="user_001",
)
- print(memory.message)
+ print(memory.request_id)
asyncio.run(main())
@@ -296,12 +299,12 @@ response = client.v1.memories.with_raw_response.create(
print(response.headers.get('X-My-Header'))
memory = response.parse() # get the object that `v1.memories.create()` would have returned
-print(memory.message)
+print(memory.request_id)
```
-These methods return an [`APIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) object.
+These methods return an [`APIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) object.
-The async client returns an [`AsyncAPIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
+The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
#### `.with_streaming_response`
@@ -410,7 +413,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
-We are keen for your feedback; please open an [issue](https://www.github.com/evermemos/evermemos-python/issues) with questions, bugs, or suggestions.
+We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/EverMemOS-python/issues) with questions, bugs, or suggestions.
### Determining the installed version
diff --git a/api.md b/api.md
index 3179fb0..695c0fb 100644
--- a/api.md
+++ b/api.md
@@ -42,20 +42,6 @@ Methods:
- client.v1.memories.conversation_meta.update(\*\*params) -> ConversationMetaUpdateResponse
- client.v1.memories.conversation_meta.get() -> ConversationMetaGetResponse
-## GlobalUserProfile
-
-### Custom
-
-Types:
-
-```python
-from evermemos.types.v1.global_user_profile import CustomUpsertResponse
-```
-
-Methods:
-
-- client.v1.global_user_profile.custom.upsert(\*\*params) -> CustomUpsertResponse
-
## Stats
### Request
diff --git a/bin/check-release-environment b/bin/check-release-environment
deleted file mode 100644
index b845b0f..0000000
--- a/bin/check-release-environment
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env bash
-
-errors=()
-
-if [ -z "${PYPI_TOKEN}" ]; then
- errors+=("The PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
-fi
-
-lenErrors=${#errors[@]}
-
-if [[ lenErrors -gt 0 ]]; then
- echo -e "Found the following errors in the release environment:\n"
-
- for error in "${errors[@]}"; do
- echo -e "- $error\n"
- done
-
- exit 1
-fi
-
-echo "The environment is ready to push releases!"
diff --git a/pyproject.toml b/pyproject.toml
index a908309..75fdd30 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -37,8 +37,8 @@ classifiers = [
]
[project.urls]
-Homepage = "https://github.com/evermemos/evermemos-python"
-Repository = "https://github.com/evermemos/evermemos-python"
+Homepage = "https://github.com/stainless-sdks/EverMemOS-python"
+Repository = "https://github.com/stainless-sdks/EverMemOS-python"
[project.optional-dependencies]
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
@@ -112,7 +112,7 @@ path = "README.md"
[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
# replace relative links with absolute links
pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
-replacement = '[\1](https://github.com/evermemos/evermemos-python/tree/main/\g<2>)'
+replacement = '[\1](https://github.com/stainless-sdks/EverMemOS-python/tree/main/\g<2>)'
[tool.pytest.ini_options]
testpaths = ["tests"]
diff --git a/release-please-config.json b/release-please-config.json
deleted file mode 100644
index 9e1e0db..0000000
--- a/release-please-config.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "packages": {
- ".": {}
- },
- "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json",
- "include-v-in-tag": true,
- "include-component-in-tag": false,
- "versioning": "prerelease",
- "prerelease": true,
- "bump-minor-pre-major": true,
- "bump-patch-for-minor-pre-major": false,
- "pull-request-header": "Automated Release PR",
- "pull-request-title-pattern": "release: ${version}",
- "changelog-sections": [
- {
- "type": "feat",
- "section": "Features"
- },
- {
- "type": "fix",
- "section": "Bug Fixes"
- },
- {
- "type": "perf",
- "section": "Performance Improvements"
- },
- {
- "type": "revert",
- "section": "Reverts"
- },
- {
- "type": "chore",
- "section": "Chores"
- },
- {
- "type": "docs",
- "section": "Documentation"
- },
- {
- "type": "style",
- "section": "Styles"
- },
- {
- "type": "refactor",
- "section": "Refactors"
- },
- {
- "type": "test",
- "section": "Tests",
- "hidden": true
- },
- {
- "type": "build",
- "section": "Build System"
- },
- {
- "type": "ci",
- "section": "Continuous Integration",
- "hidden": true
- }
- ],
- "release-type": "python",
- "extra-files": [
- "src/evermemos/_version.py"
- ]
-}
\ No newline at end of file
diff --git a/src/evermemos/_version.py b/src/evermemos/_version.py
index 334c40d..3bb3987 100644
--- a/src/evermemos/_version.py
+++ b/src/evermemos/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "evermemos"
-__version__ = "0.3.7" # x-release-please-version
+__version__ = "0.3.7"
diff --git a/src/evermemos/resources/v1/__init__.py b/src/evermemos/resources/v1/__init__.py
index a63144f..56c92eb 100644
--- a/src/evermemos/resources/v1/__init__.py
+++ b/src/evermemos/resources/v1/__init__.py
@@ -24,14 +24,6 @@
MemoriesResourceWithStreamingResponse,
AsyncMemoriesResourceWithStreamingResponse,
)
-from .global_user_profile import (
- GlobalUserProfileResource,
- AsyncGlobalUserProfileResource,
- GlobalUserProfileResourceWithRawResponse,
- AsyncGlobalUserProfileResourceWithRawResponse,
- GlobalUserProfileResourceWithStreamingResponse,
- AsyncGlobalUserProfileResourceWithStreamingResponse,
-)
__all__ = [
"MemoriesResource",
@@ -40,12 +32,6 @@
"AsyncMemoriesResourceWithRawResponse",
"MemoriesResourceWithStreamingResponse",
"AsyncMemoriesResourceWithStreamingResponse",
- "GlobalUserProfileResource",
- "AsyncGlobalUserProfileResource",
- "GlobalUserProfileResourceWithRawResponse",
- "AsyncGlobalUserProfileResourceWithRawResponse",
- "GlobalUserProfileResourceWithStreamingResponse",
- "AsyncGlobalUserProfileResourceWithStreamingResponse",
"StatsResource",
"AsyncStatsResource",
"StatsResourceWithRawResponse",
diff --git a/src/evermemos/resources/v1/global_user_profile/__init__.py b/src/evermemos/resources/v1/global_user_profile/__init__.py
deleted file mode 100644
index bcc5328..0000000
--- a/src/evermemos/resources/v1/global_user_profile/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# 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",
-]
diff --git a/src/evermemos/resources/v1/global_user_profile/custom.py b/src/evermemos/resources/v1/global_user_profile/custom.py
deleted file mode 100644
index fb23b19..0000000
--- a/src/evermemos/resources/v1/global_user_profile/custom.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import httpx
-
-from ...._types import Body, Query, Headers, NotGiven, not_given
-from ...._utils import maybe_transform, async_maybe_transform
-from ...._compat import cached_property
-from ...._resource import SyncAPIResource, AsyncAPIResource
-from ...._response import (
- to_raw_response_wrapper,
- to_streamed_response_wrapper,
- async_to_raw_response_wrapper,
- async_to_streamed_response_wrapper,
-)
-from ...._base_client import make_request_options
-from ....types.v1.global_user_profile import custom_upsert_params
-from ....types.v1.global_user_profile.custom_upsert_response import CustomUpsertResponse
-
-__all__ = ["CustomResource", "AsyncCustomResource"]
-
-
-class CustomResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> CustomResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
- """
- return CustomResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> CustomResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
- """
- return CustomResourceWithStreamingResponse(self)
-
- def upsert(
- self,
- *,
- custom_profile_data: custom_upsert_params.CustomProfileData,
- user_id: str,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> CustomUpsertResponse:
- """
- Upsert custom profile data for a user
-
- Args:
- custom_profile_data: Custom profile data to upsert
-
- user_id: User ID
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- return self._post(
- "/api/v1/global-user-profile/custom",
- body=maybe_transform(
- {
- "custom_profile_data": custom_profile_data,
- "user_id": user_id,
- },
- custom_upsert_params.CustomUpsertParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=CustomUpsertResponse,
- )
-
-
-class AsyncCustomResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncCustomResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
- """
- return AsyncCustomResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncCustomResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
- """
- return AsyncCustomResourceWithStreamingResponse(self)
-
- async def upsert(
- self,
- *,
- custom_profile_data: custom_upsert_params.CustomProfileData,
- user_id: str,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> CustomUpsertResponse:
- """
- Upsert custom profile data for a user
-
- Args:
- custom_profile_data: Custom profile data to upsert
-
- user_id: User ID
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- return await self._post(
- "/api/v1/global-user-profile/custom",
- body=await async_maybe_transform(
- {
- "custom_profile_data": custom_profile_data,
- "user_id": user_id,
- },
- custom_upsert_params.CustomUpsertParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=CustomUpsertResponse,
- )
-
-
-class CustomResourceWithRawResponse:
- def __init__(self, custom: CustomResource) -> None:
- self._custom = custom
-
- self.upsert = to_raw_response_wrapper(
- custom.upsert,
- )
-
-
-class AsyncCustomResourceWithRawResponse:
- def __init__(self, custom: AsyncCustomResource) -> None:
- self._custom = custom
-
- self.upsert = async_to_raw_response_wrapper(
- custom.upsert,
- )
-
-
-class CustomResourceWithStreamingResponse:
- def __init__(self, custom: CustomResource) -> None:
- self._custom = custom
-
- self.upsert = to_streamed_response_wrapper(
- custom.upsert,
- )
-
-
-class AsyncCustomResourceWithStreamingResponse:
- def __init__(self, custom: AsyncCustomResource) -> None:
- self._custom = custom
-
- self.upsert = async_to_streamed_response_wrapper(
- custom.upsert,
- )
diff --git a/src/evermemos/resources/v1/global_user_profile/global_user_profile.py b/src/evermemos/resources/v1/global_user_profile/global_user_profile.py
deleted file mode 100644
index 5b63892..0000000
--- a/src/evermemos/resources/v1/global_user_profile/global_user_profile.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from .custom import (
- CustomResource,
- AsyncCustomResource,
- CustomResourceWithRawResponse,
- AsyncCustomResourceWithRawResponse,
- CustomResourceWithStreamingResponse,
- AsyncCustomResourceWithStreamingResponse,
-)
-from ...._compat import cached_property
-from ...._resource import SyncAPIResource, AsyncAPIResource
-
-__all__ = ["GlobalUserProfileResource", "AsyncGlobalUserProfileResource"]
-
-
-class GlobalUserProfileResource(SyncAPIResource):
- @cached_property
- def custom(self) -> CustomResource:
- return CustomResource(self._client)
-
- @cached_property
- def with_raw_response(self) -> GlobalUserProfileResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
- """
- return GlobalUserProfileResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> GlobalUserProfileResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
- """
- return GlobalUserProfileResourceWithStreamingResponse(self)
-
-
-class AsyncGlobalUserProfileResource(AsyncAPIResource):
- @cached_property
- def custom(self) -> AsyncCustomResource:
- return AsyncCustomResource(self._client)
-
- @cached_property
- def with_raw_response(self) -> AsyncGlobalUserProfileResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
- """
- return AsyncGlobalUserProfileResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncGlobalUserProfileResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
- """
- return AsyncGlobalUserProfileResourceWithStreamingResponse(self)
-
-
-class GlobalUserProfileResourceWithRawResponse:
- def __init__(self, global_user_profile: GlobalUserProfileResource) -> None:
- self._global_user_profile = global_user_profile
-
- @cached_property
- def custom(self) -> CustomResourceWithRawResponse:
- return CustomResourceWithRawResponse(self._global_user_profile.custom)
-
-
-class AsyncGlobalUserProfileResourceWithRawResponse:
- def __init__(self, global_user_profile: AsyncGlobalUserProfileResource) -> None:
- self._global_user_profile = global_user_profile
-
- @cached_property
- def custom(self) -> AsyncCustomResourceWithRawResponse:
- return AsyncCustomResourceWithRawResponse(self._global_user_profile.custom)
-
-
-class GlobalUserProfileResourceWithStreamingResponse:
- def __init__(self, global_user_profile: GlobalUserProfileResource) -> None:
- self._global_user_profile = global_user_profile
-
- @cached_property
- def custom(self) -> CustomResourceWithStreamingResponse:
- return CustomResourceWithStreamingResponse(self._global_user_profile.custom)
-
-
-class AsyncGlobalUserProfileResourceWithStreamingResponse:
- def __init__(self, global_user_profile: AsyncGlobalUserProfileResource) -> None:
- self._global_user_profile = global_user_profile
-
- @cached_property
- def custom(self) -> AsyncCustomResourceWithStreamingResponse:
- return AsyncCustomResourceWithStreamingResponse(self._global_user_profile.custom)
diff --git a/src/evermemos/resources/v1/memories/conversation_meta.py b/src/evermemos/resources/v1/memories/conversation_meta.py
index eb961e5..5a370c0 100644
--- a/src/evermemos/resources/v1/memories/conversation_meta.py
+++ b/src/evermemos/resources/v1/memories/conversation_meta.py
@@ -32,7 +32,7 @@ def with_raw_response(self) -> ConversationMetaResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return ConversationMetaResourceWithRawResponse(self)
@@ -41,7 +41,7 @@ def with_streaming_response(self) -> ConversationMetaResourceWithStreamingRespon
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return ConversationMetaResourceWithStreamingResponse(self)
@@ -214,7 +214,7 @@ def with_raw_response(self) -> AsyncConversationMetaResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return AsyncConversationMetaResourceWithRawResponse(self)
@@ -223,7 +223,7 @@ def with_streaming_response(self) -> AsyncConversationMetaResourceWithStreamingR
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return AsyncConversationMetaResourceWithStreamingResponse(self)
diff --git a/src/evermemos/resources/v1/memories/memories.py b/src/evermemos/resources/v1/memories/memories.py
index 85fbb90..0756127 100644
--- a/src/evermemos/resources/v1/memories/memories.py
+++ b/src/evermemos/resources/v1/memories/memories.py
@@ -46,7 +46,7 @@ def with_raw_response(self) -> MemoriesResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return MemoriesResourceWithRawResponse(self)
@@ -55,7 +55,7 @@ def with_streaming_response(self) -> MemoriesResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return MemoriesResourceWithStreamingResponse(self)
@@ -66,6 +66,7 @@ def create(
create_time: str,
message_id: str,
sender: str,
+ flush: bool | Omit = omit,
group_id: Optional[str] | Omit = omit,
group_name: Optional[str] | Omit = omit,
refer_list: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -90,6 +91,9 @@ def create(
sender: Sender user ID (required). Also used as user_id internally for memory ownership.
+ flush: Force boundary trigger. When True, immediately triggers memory extraction
+ instead of waiting for natural boundary detection.
+
group_id: Group ID. If not provided, will automatically generate based on hash(sender) +
'\\__group' suffix, representing single-user mode where each user's messages are
extracted into separate memory spaces.
@@ -122,6 +126,7 @@ def create(
"create_time": create_time,
"message_id": message_id,
"sender": sender,
+ "flush": flush,
"group_id": group_id,
"group_name": group_name,
"refer_list": refer_list,
@@ -139,8 +144,8 @@ def create(
def delete(
self,
*,
- event_id: Optional[str] | Omit = omit,
group_id: Optional[str] | Omit = omit,
+ memory_id: Optional[str] | Omit = omit,
user_id: Optional[str] | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -153,10 +158,10 @@ def delete(
Delete memory records based on combined filter criteria
Args:
- event_id: Memory event_id (filter condition)
-
group_id: Group ID (filter condition)
+ memory_id: Memory id (filter condition)
+
user_id: User ID (filter condition)
extra_headers: Send extra headers
@@ -171,8 +176,8 @@ def delete(
"/api/v1/memories",
body=maybe_transform(
{
- "event_id": event_id,
"group_id": group_id,
+ "memory_id": memory_id,
"user_id": user_id,
},
memory_delete_params.MemoryDeleteParams,
@@ -285,7 +290,7 @@ def with_raw_response(self) -> AsyncMemoriesResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return AsyncMemoriesResourceWithRawResponse(self)
@@ -294,7 +299,7 @@ def with_streaming_response(self) -> AsyncMemoriesResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return AsyncMemoriesResourceWithStreamingResponse(self)
@@ -305,6 +310,7 @@ async def create(
create_time: str,
message_id: str,
sender: str,
+ flush: bool | Omit = omit,
group_id: Optional[str] | Omit = omit,
group_name: Optional[str] | Omit = omit,
refer_list: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -329,6 +335,9 @@ async def create(
sender: Sender user ID (required). Also used as user_id internally for memory ownership.
+ flush: Force boundary trigger. When True, immediately triggers memory extraction
+ instead of waiting for natural boundary detection.
+
group_id: Group ID. If not provided, will automatically generate based on hash(sender) +
'\\__group' suffix, representing single-user mode where each user's messages are
extracted into separate memory spaces.
@@ -361,6 +370,7 @@ async def create(
"create_time": create_time,
"message_id": message_id,
"sender": sender,
+ "flush": flush,
"group_id": group_id,
"group_name": group_name,
"refer_list": refer_list,
@@ -378,8 +388,8 @@ async def create(
async def delete(
self,
*,
- event_id: Optional[str] | Omit = omit,
group_id: Optional[str] | Omit = omit,
+ memory_id: Optional[str] | Omit = omit,
user_id: Optional[str] | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -392,10 +402,10 @@ async def delete(
Delete memory records based on combined filter criteria
Args:
- event_id: Memory event_id (filter condition)
-
group_id: Group ID (filter condition)
+ memory_id: Memory id (filter condition)
+
user_id: User ID (filter condition)
extra_headers: Send extra headers
@@ -410,8 +420,8 @@ async def delete(
"/api/v1/memories",
body=await async_maybe_transform(
{
- "event_id": event_id,
"group_id": group_id,
+ "memory_id": memory_id,
"user_id": user_id,
},
memory_delete_params.MemoryDeleteParams,
diff --git a/src/evermemos/resources/v1/stats/request.py b/src/evermemos/resources/v1/stats/request.py
index 3ae1746..94b6354 100644
--- a/src/evermemos/resources/v1/stats/request.py
+++ b/src/evermemos/resources/v1/stats/request.py
@@ -30,7 +30,7 @@ def with_raw_response(self) -> RequestResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return RequestResourceWithRawResponse(self)
@@ -39,7 +39,7 @@ def with_streaming_response(self) -> RequestResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return RequestResourceWithStreamingResponse(self)
@@ -58,7 +58,7 @@ def get(
Query the processing status of a specific request
Args:
- request_id: Request ID (recommended)
+ request_id: this id is returned by add_memories api
extra_headers: Send extra headers
@@ -88,7 +88,7 @@ def with_raw_response(self) -> AsyncRequestResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return AsyncRequestResourceWithRawResponse(self)
@@ -97,7 +97,7 @@ def with_streaming_response(self) -> AsyncRequestResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return AsyncRequestResourceWithStreamingResponse(self)
@@ -116,7 +116,7 @@ async def get(
Query the processing status of a specific request
Args:
- request_id: Request ID (recommended)
+ request_id: this id is returned by add_memories api
extra_headers: Send extra headers
diff --git a/src/evermemos/resources/v1/stats/stats.py b/src/evermemos/resources/v1/stats/stats.py
index 829bc66..a535c41 100644
--- a/src/evermemos/resources/v1/stats/stats.py
+++ b/src/evermemos/resources/v1/stats/stats.py
@@ -27,7 +27,7 @@ def with_raw_response(self) -> StatsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return StatsResourceWithRawResponse(self)
@@ -36,7 +36,7 @@ def with_streaming_response(self) -> StatsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return StatsResourceWithStreamingResponse(self)
@@ -52,7 +52,7 @@ def with_raw_response(self) -> AsyncStatsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return AsyncStatsResourceWithRawResponse(self)
@@ -61,7 +61,7 @@ def with_streaming_response(self) -> AsyncStatsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return AsyncStatsResourceWithStreamingResponse(self)
diff --git a/src/evermemos/resources/v1/v1.py b/src/evermemos/resources/v1/v1.py
index 929f6b6..29274d6 100644
--- a/src/evermemos/resources/v1/v1.py
+++ b/src/evermemos/resources/v1/v1.py
@@ -20,14 +20,6 @@
MemoriesResourceWithStreamingResponse,
AsyncMemoriesResourceWithStreamingResponse,
)
-from .global_user_profile.global_user_profile import (
- GlobalUserProfileResource,
- AsyncGlobalUserProfileResource,
- GlobalUserProfileResourceWithRawResponse,
- AsyncGlobalUserProfileResourceWithRawResponse,
- GlobalUserProfileResourceWithStreamingResponse,
- AsyncGlobalUserProfileResourceWithStreamingResponse,
-)
__all__ = ["V1Resource", "AsyncV1Resource"]
@@ -37,10 +29,6 @@ class V1Resource(SyncAPIResource):
def memories(self) -> MemoriesResource:
return MemoriesResource(self._client)
- @cached_property
- def global_user_profile(self) -> GlobalUserProfileResource:
- return GlobalUserProfileResource(self._client)
-
@cached_property
def stats(self) -> StatsResource:
return StatsResource(self._client)
@@ -51,7 +39,7 @@ def with_raw_response(self) -> V1ResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return V1ResourceWithRawResponse(self)
@@ -60,7 +48,7 @@ def with_streaming_response(self) -> V1ResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return V1ResourceWithStreamingResponse(self)
@@ -70,10 +58,6 @@ class AsyncV1Resource(AsyncAPIResource):
def memories(self) -> AsyncMemoriesResource:
return AsyncMemoriesResource(self._client)
- @cached_property
- def global_user_profile(self) -> AsyncGlobalUserProfileResource:
- return AsyncGlobalUserProfileResource(self._client)
-
@cached_property
def stats(self) -> AsyncStatsResource:
return AsyncStatsResource(self._client)
@@ -84,7 +68,7 @@ def with_raw_response(self) -> AsyncV1ResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
"""
return AsyncV1ResourceWithRawResponse(self)
@@ -93,7 +77,7 @@ def with_streaming_response(self) -> AsyncV1ResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
"""
return AsyncV1ResourceWithStreamingResponse(self)
@@ -106,10 +90,6 @@ def __init__(self, v1: V1Resource) -> None:
def memories(self) -> MemoriesResourceWithRawResponse:
return MemoriesResourceWithRawResponse(self._v1.memories)
- @cached_property
- def global_user_profile(self) -> GlobalUserProfileResourceWithRawResponse:
- return GlobalUserProfileResourceWithRawResponse(self._v1.global_user_profile)
-
@cached_property
def stats(self) -> StatsResourceWithRawResponse:
return StatsResourceWithRawResponse(self._v1.stats)
@@ -123,10 +103,6 @@ def __init__(self, v1: AsyncV1Resource) -> None:
def memories(self) -> AsyncMemoriesResourceWithRawResponse:
return AsyncMemoriesResourceWithRawResponse(self._v1.memories)
- @cached_property
- def global_user_profile(self) -> AsyncGlobalUserProfileResourceWithRawResponse:
- return AsyncGlobalUserProfileResourceWithRawResponse(self._v1.global_user_profile)
-
@cached_property
def stats(self) -> AsyncStatsResourceWithRawResponse:
return AsyncStatsResourceWithRawResponse(self._v1.stats)
@@ -140,10 +116,6 @@ def __init__(self, v1: V1Resource) -> None:
def memories(self) -> MemoriesResourceWithStreamingResponse:
return MemoriesResourceWithStreamingResponse(self._v1.memories)
- @cached_property
- def global_user_profile(self) -> GlobalUserProfileResourceWithStreamingResponse:
- return GlobalUserProfileResourceWithStreamingResponse(self._v1.global_user_profile)
-
@cached_property
def stats(self) -> StatsResourceWithStreamingResponse:
return StatsResourceWithStreamingResponse(self._v1.stats)
@@ -157,10 +129,6 @@ def __init__(self, v1: AsyncV1Resource) -> None:
def memories(self) -> AsyncMemoriesResourceWithStreamingResponse:
return AsyncMemoriesResourceWithStreamingResponse(self._v1.memories)
- @cached_property
- def global_user_profile(self) -> AsyncGlobalUserProfileResourceWithStreamingResponse:
- return AsyncGlobalUserProfileResourceWithStreamingResponse(self._v1.global_user_profile)
-
@cached_property
def stats(self) -> AsyncStatsResourceWithStreamingResponse:
return AsyncStatsResourceWithStreamingResponse(self._v1.stats)
diff --git a/src/evermemos/types/v1/global_user_profile/__init__.py b/src/evermemos/types/v1/global_user_profile/__init__.py
index 420b2eb..f8ee8b1 100644
--- a/src/evermemos/types/v1/global_user_profile/__init__.py
+++ b/src/evermemos/types/v1/global_user_profile/__init__.py
@@ -1,6 +1,3 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from __future__ import annotations
-
-from .custom_upsert_params import CustomUpsertParams as CustomUpsertParams
-from .custom_upsert_response import CustomUpsertResponse as CustomUpsertResponse
diff --git a/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py b/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py
deleted file mode 100644
index 74ab9d3..0000000
--- a/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing_extensions import Required, TypedDict
-
-from ...._types import SequenceNotStr
-
-__all__ = ["CustomUpsertParams", "CustomProfileData"]
-
-
-class CustomUpsertParams(TypedDict, total=False):
- custom_profile_data: Required[CustomProfileData]
- """Custom profile data to upsert"""
-
- user_id: Required[str]
- """User ID"""
-
-
-class CustomProfileData(TypedDict, total=False):
- """Custom profile data to upsert"""
-
- initial_profile: Required[SequenceNotStr[str]]
- """List of profile sentences describing the user"""
diff --git a/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py b/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py
deleted file mode 100644
index 0510879..0000000
--- a/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import Dict, Optional
-
-from ...._models import BaseModel
-
-__all__ = ["CustomUpsertResponse"]
-
-
-class CustomUpsertResponse(BaseModel):
- """Upsert custom profile response
-
- Response for upsert custom profile API.
- """
-
- success: bool
- """Whether the operation was successful"""
-
- data: Optional[Dict[str, object]] = None
- """Created/updated profile data"""
-
- message: Optional[str] = None
- """Message"""
diff --git a/src/evermemos/types/v1/memory_create_params.py b/src/evermemos/types/v1/memory_create_params.py
index d8735b6..7f654d0 100644
--- a/src/evermemos/types/v1/memory_create_params.py
+++ b/src/evermemos/types/v1/memory_create_params.py
@@ -26,6 +26,13 @@ class MemoryCreateParams(TypedDict, total=False):
Also used as user_id internally for memory ownership.
"""
+ flush: bool
+ """Force boundary trigger.
+
+ When True, immediately triggers memory extraction instead of waiting for natural
+ boundary detection.
+ """
+
group_id: Optional[str]
"""Group ID.
diff --git a/src/evermemos/types/v1/memory_create_response.py b/src/evermemos/types/v1/memory_create_response.py
index ef25ed0..1cdce76 100644
--- a/src/evermemos/types/v1/memory_create_response.py
+++ b/src/evermemos/types/v1/memory_create_response.py
@@ -1,39 +1,13 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-from typing import List, Optional
-
from ..._models import BaseModel
-__all__ = ["MemoryCreateResponse", "Result"]
-
-
-class Result(BaseModel):
- """Memory storage result"""
-
- count: Optional[int] = None
- """Number of memories extracted"""
-
- saved_memories: Optional[List[object]] = None
- """List of saved memories (fetch via API for details)"""
-
- status_info: Optional[str] = None
- """
- Processing status: 'extracted' (memories created) or 'accumulated' (waiting for
- boundary)
- """
+__all__ = ["MemoryCreateResponse"]
class MemoryCreateResponse(BaseModel):
- """Memory storage response
-
- Response for POST /api/v1/memories endpoint.
- """
-
- message: Optional[str] = None
- """Response message"""
+ message: str
- result: Optional[Result] = None
- """Memory storage result"""
+ request_id: str
- status: Optional[str] = None
- """Response status"""
+ status: str
diff --git a/src/evermemos/types/v1/memory_delete_params.py b/src/evermemos/types/v1/memory_delete_params.py
index 6fff2d0..9d73bc1 100644
--- a/src/evermemos/types/v1/memory_delete_params.py
+++ b/src/evermemos/types/v1/memory_delete_params.py
@@ -9,11 +9,11 @@
class MemoryDeleteParams(TypedDict, total=False):
- event_id: Optional[str]
- """Memory event_id (filter condition)"""
-
group_id: Optional[str]
"""Group ID (filter condition)"""
+ memory_id: Optional[str]
+ """Memory id (filter condition)"""
+
user_id: Optional[str]
"""User ID (filter condition)"""
diff --git a/src/evermemos/types/v1/memory_get_response.py b/src/evermemos/types/v1/memory_get_response.py
index a3fe20b..ba28bc4 100644
--- a/src/evermemos/types/v1/memory_get_response.py
+++ b/src/evermemos/types/v1/memory_get_response.py
@@ -145,10 +145,12 @@ class ResultMemoryEpisodicMemoryModel(BaseModel):
location: Optional[str] = None
- memcell_event_id_list: Optional[List[str]] = None
-
metadata: Optional[Metadata] = None
+ parent_id: Optional[str] = None
+
+ parent_type: Optional[str] = None
+
participants: Optional[List[str]] = None
start_time: Optional[datetime] = None
diff --git a/src/evermemos/types/v1/stats/request_get_params.py b/src/evermemos/types/v1/stats/request_get_params.py
index 2b117d1..9657562 100644
--- a/src/evermemos/types/v1/stats/request_get_params.py
+++ b/src/evermemos/types/v1/stats/request_get_params.py
@@ -10,4 +10,4 @@
class RequestGetParams(TypedDict, total=False):
request_id: Required[Optional[str]]
- """Request ID (recommended)"""
+ """this id is returned by add_memories api"""
diff --git a/tests/api_resources/v1/global_user_profile/__init__.py b/tests/api_resources/v1/global_user_profile/__init__.py
deleted file mode 100644
index fd8019a..0000000
--- a/tests/api_resources/v1/global_user_profile/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
diff --git a/tests/api_resources/v1/global_user_profile/test_custom.py b/tests/api_resources/v1/global_user_profile/test_custom.py
deleted file mode 100644
index 4bc9408..0000000
--- a/tests/api_resources/v1/global_user_profile/test_custom.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import os
-from typing import Any, cast
-
-import pytest
-
-from evermemos import EverMemOS, AsyncEverMemOS
-from tests.utils import assert_matches_type
-from evermemos.types.v1.global_user_profile import CustomUpsertResponse
-
-base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
-
-
-class TestCustom:
- parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_method_upsert(self, client: EverMemOS) -> None:
- custom = client.v1.global_user_profile.custom.upsert(
- custom_profile_data={
- "initial_profile": [
- "User is a software engineer",
- "User is proficient in Python programming",
- "User is interested in AI technology",
- ]
- },
- user_id="user_id",
- )
- assert_matches_type(CustomUpsertResponse, custom, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_raw_response_upsert(self, client: EverMemOS) -> None:
- response = client.v1.global_user_profile.custom.with_raw_response.upsert(
- custom_profile_data={
- "initial_profile": [
- "User is a software engineer",
- "User is proficient in Python programming",
- "User is interested in AI technology",
- ]
- },
- user_id="user_id",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- custom = response.parse()
- assert_matches_type(CustomUpsertResponse, custom, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_streaming_response_upsert(self, client: EverMemOS) -> None:
- with client.v1.global_user_profile.custom.with_streaming_response.upsert(
- custom_profile_data={
- "initial_profile": [
- "User is a software engineer",
- "User is proficient in Python programming",
- "User is interested in AI technology",
- ]
- },
- user_id="user_id",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- custom = response.parse()
- assert_matches_type(CustomUpsertResponse, custom, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
-
-class TestAsyncCustom:
- parametrize = pytest.mark.parametrize(
- "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
- )
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_method_upsert(self, async_client: AsyncEverMemOS) -> None:
- custom = await async_client.v1.global_user_profile.custom.upsert(
- custom_profile_data={
- "initial_profile": [
- "User is a software engineer",
- "User is proficient in Python programming",
- "User is interested in AI technology",
- ]
- },
- user_id="user_id",
- )
- assert_matches_type(CustomUpsertResponse, custom, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_raw_response_upsert(self, async_client: AsyncEverMemOS) -> None:
- response = await async_client.v1.global_user_profile.custom.with_raw_response.upsert(
- custom_profile_data={
- "initial_profile": [
- "User is a software engineer",
- "User is proficient in Python programming",
- "User is interested in AI technology",
- ]
- },
- user_id="user_id",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- custom = await response.parse()
- assert_matches_type(CustomUpsertResponse, custom, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_streaming_response_upsert(self, async_client: AsyncEverMemOS) -> None:
- async with async_client.v1.global_user_profile.custom.with_streaming_response.upsert(
- custom_profile_data={
- "initial_profile": [
- "User is a software engineer",
- "User is proficient in Python programming",
- "User is interested in AI technology",
- ]
- },
- user_id="user_id",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- custom = await response.parse()
- assert_matches_type(CustomUpsertResponse, custom, path=["response"])
-
- assert cast(Any, response.is_closed) is True
diff --git a/tests/api_resources/v1/test_memories.py b/tests/api_resources/v1/test_memories.py
index 9946764..ffde8ee 100644
--- a/tests/api_resources/v1/test_memories.py
+++ b/tests/api_resources/v1/test_memories.py
@@ -42,6 +42,7 @@ def test_method_create_with_all_params(self, client: EverMemOS) -> None:
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_001",
+ flush=False,
group_id="group_123",
group_name="Project Discussion Group",
refer_list=["msg_000"],
@@ -92,8 +93,8 @@ def test_method_delete(self, client: EverMemOS) -> None:
@parametrize
def test_method_delete_with_all_params(self, client: EverMemOS) -> None:
memory = client.v1.memories.delete(
- event_id="507f1f77bcf86cd799439011",
group_id="group_456",
+ memory_id="507f1f77bcf86cd799439011",
user_id="user_123",
)
assert_matches_type(MemoryDeleteResponse, memory, path=["response"])
@@ -270,6 +271,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncEverMemOS)
create_time="2025-01-15T10:00:00+00:00",
message_id="msg_001",
sender="user_001",
+ flush=False,
group_id="group_123",
group_name="Project Discussion Group",
refer_list=["msg_000"],
@@ -320,8 +322,8 @@ async def test_method_delete(self, async_client: AsyncEverMemOS) -> None:
@parametrize
async def test_method_delete_with_all_params(self, async_client: AsyncEverMemOS) -> None:
memory = await async_client.v1.memories.delete(
- event_id="507f1f77bcf86cd799439011",
group_id="group_456",
+ memory_id="507f1f77bcf86cd799439011",
user_id="user_123",
)
assert_matches_type(MemoryDeleteResponse, memory, path=["response"])
From 11a1c09da854becb6567ad5428db716e38e81ee0 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 28 Jan 2026 11:45:55 +0000
Subject: [PATCH 2/4] chore: update SDK settings
---
.github/workflows/publish-pypi.yml | 28 ++++++++
.github/workflows/release-doctor.yml | 21 ++++++
.release-please-manifest.json | 3 +
.stats.yml | 2 +-
CONTRIBUTING.md | 4 +-
README.md | 14 ++--
bin/check-release-environment | 21 ++++++
pyproject.toml | 6 +-
release-please-config.json | 66 +++++++++++++++++++
src/evermemos/_version.py | 2 +-
.../v1/memories/conversation_meta.py | 8 +--
.../resources/v1/memories/memories.py | 8 +--
src/evermemos/resources/v1/stats/request.py | 8 +--
src/evermemos/resources/v1/stats/stats.py | 8 +--
src/evermemos/resources/v1/v1.py | 8 +--
15 files changed, 173 insertions(+), 34 deletions(-)
create mode 100644 .github/workflows/publish-pypi.yml
create mode 100644 .github/workflows/release-doctor.yml
create mode 100644 .release-please-manifest.json
create mode 100644 bin/check-release-environment
create mode 100644 release-please-config.json
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
new file mode 100644
index 0000000..6fff56a
--- /dev/null
+++ b/.github/workflows/publish-pypi.yml
@@ -0,0 +1,28 @@
+# This workflow is triggered when a GitHub release is created.
+# It can also be run manually to re-publish to PyPI in case it failed for some reason.
+# You can run this workflow by navigating to https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml
+name: Publish PyPI
+on:
+ workflow_dispatch:
+
+ release:
+ types: [published]
+
+jobs:
+ publish:
+ name: publish
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Install uv
+ uses: astral-sh/setup-uv@v5
+ with:
+ version: '0.9.13'
+
+ - name: Publish to PyPI
+ run: |
+ bash ./bin/publish-pypi
+ env:
+ PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
new file mode 100644
index 0000000..73257f5
--- /dev/null
+++ b/.github/workflows/release-doctor.yml
@@ -0,0 +1,21 @@
+name: Release Doctor
+on:
+ pull_request:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ release_doctor:
+ name: release doctor
+ runs-on: ubuntu-latest
+ if: github.repository == 'evermemos/evermemos-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')
+
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Check release environment
+ run: |
+ bash ./bin/check-release-environment
+ env:
+ PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
new file mode 100644
index 0000000..457d91e
--- /dev/null
+++ b/.release-please-manifest.json
@@ -0,0 +1,3 @@
+{
+ ".": "0.3.7"
+}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index fe48da6..1dd5ebd 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 9
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-70486f52a522b1271f833cc3263dfe012c0ae7c0f1d520a18d45037cc9633511.yml
openapi_spec_hash: 3b4ed62d5425b7d7c4313c731b9f4959
-config_hash: 49fa8adc2cd2a34ce9f1c66e45e03a17
+config_hash: 81e0b016bf2561036eec95f88cbd6707
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e2e1e5a..315c632 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -62,7 +62,7 @@ If you’d like to use the repository from source, you can either install from g
To install via git:
```sh
-$ pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git
+$ pip install git+ssh://git@github.com/evermemos/evermemos-python.git
```
Alternatively, you can build from source and install the wheel file:
@@ -120,7 +120,7 @@ the changes aren't made through the automated pipeline, you may want to make rel
### Publish with a GitHub workflow
-You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/EverMemOS-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
+You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
### Publish manually
diff --git a/README.md b/README.md
index e151a42..a8e8731 100644
--- a/README.md
+++ b/README.md
@@ -16,8 +16,8 @@ The full API of this library can be found in [api.md](api.md).
## Installation
```sh
-# install from this staging repo
-pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git
+# install from the production repo
+pip install git+ssh://git@github.com/evermemos/evermemos-python.git
```
> [!NOTE]
@@ -85,8 +85,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv
You can enable this by installing `aiohttp`:
```sh
-# install from this staging repo
-pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git'
+# install from the production repo
+pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/evermemos/evermemos-python.git'
```
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
@@ -302,9 +302,9 @@ memory = response.parse() # get the object that `v1.memories.create()` would ha
print(memory.request_id)
```
-These methods return an [`APIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) object.
+These methods return an [`APIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) object.
-The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
+The async client returns an [`AsyncAPIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
#### `.with_streaming_response`
@@ -413,7 +413,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
-We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/EverMemOS-python/issues) with questions, bugs, or suggestions.
+We are keen for your feedback; please open an [issue](https://www.github.com/evermemos/evermemos-python/issues) with questions, bugs, or suggestions.
### Determining the installed version
diff --git a/bin/check-release-environment b/bin/check-release-environment
new file mode 100644
index 0000000..b845b0f
--- /dev/null
+++ b/bin/check-release-environment
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+errors=()
+
+if [ -z "${PYPI_TOKEN}" ]; then
+ errors+=("The PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
+fi
+
+lenErrors=${#errors[@]}
+
+if [[ lenErrors -gt 0 ]]; then
+ echo -e "Found the following errors in the release environment:\n"
+
+ for error in "${errors[@]}"; do
+ echo -e "- $error\n"
+ done
+
+ exit 1
+fi
+
+echo "The environment is ready to push releases!"
diff --git a/pyproject.toml b/pyproject.toml
index 75fdd30..a908309 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -37,8 +37,8 @@ classifiers = [
]
[project.urls]
-Homepage = "https://github.com/stainless-sdks/EverMemOS-python"
-Repository = "https://github.com/stainless-sdks/EverMemOS-python"
+Homepage = "https://github.com/evermemos/evermemos-python"
+Repository = "https://github.com/evermemos/evermemos-python"
[project.optional-dependencies]
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
@@ -112,7 +112,7 @@ path = "README.md"
[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
# replace relative links with absolute links
pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
-replacement = '[\1](https://github.com/stainless-sdks/EverMemOS-python/tree/main/\g<2>)'
+replacement = '[\1](https://github.com/evermemos/evermemos-python/tree/main/\g<2>)'
[tool.pytest.ini_options]
testpaths = ["tests"]
diff --git a/release-please-config.json b/release-please-config.json
new file mode 100644
index 0000000..9e1e0db
--- /dev/null
+++ b/release-please-config.json
@@ -0,0 +1,66 @@
+{
+ "packages": {
+ ".": {}
+ },
+ "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json",
+ "include-v-in-tag": true,
+ "include-component-in-tag": false,
+ "versioning": "prerelease",
+ "prerelease": true,
+ "bump-minor-pre-major": true,
+ "bump-patch-for-minor-pre-major": false,
+ "pull-request-header": "Automated Release PR",
+ "pull-request-title-pattern": "release: ${version}",
+ "changelog-sections": [
+ {
+ "type": "feat",
+ "section": "Features"
+ },
+ {
+ "type": "fix",
+ "section": "Bug Fixes"
+ },
+ {
+ "type": "perf",
+ "section": "Performance Improvements"
+ },
+ {
+ "type": "revert",
+ "section": "Reverts"
+ },
+ {
+ "type": "chore",
+ "section": "Chores"
+ },
+ {
+ "type": "docs",
+ "section": "Documentation"
+ },
+ {
+ "type": "style",
+ "section": "Styles"
+ },
+ {
+ "type": "refactor",
+ "section": "Refactors"
+ },
+ {
+ "type": "test",
+ "section": "Tests",
+ "hidden": true
+ },
+ {
+ "type": "build",
+ "section": "Build System"
+ },
+ {
+ "type": "ci",
+ "section": "Continuous Integration",
+ "hidden": true
+ }
+ ],
+ "release-type": "python",
+ "extra-files": [
+ "src/evermemos/_version.py"
+ ]
+}
\ No newline at end of file
diff --git a/src/evermemos/_version.py b/src/evermemos/_version.py
index 3bb3987..334c40d 100644
--- a/src/evermemos/_version.py
+++ b/src/evermemos/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "evermemos"
-__version__ = "0.3.7"
+__version__ = "0.3.7" # x-release-please-version
diff --git a/src/evermemos/resources/v1/memories/conversation_meta.py b/src/evermemos/resources/v1/memories/conversation_meta.py
index 5a370c0..eb961e5 100644
--- a/src/evermemos/resources/v1/memories/conversation_meta.py
+++ b/src/evermemos/resources/v1/memories/conversation_meta.py
@@ -32,7 +32,7 @@ def with_raw_response(self) -> ConversationMetaResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return ConversationMetaResourceWithRawResponse(self)
@@ -41,7 +41,7 @@ def with_streaming_response(self) -> ConversationMetaResourceWithStreamingRespon
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return ConversationMetaResourceWithStreamingResponse(self)
@@ -214,7 +214,7 @@ def with_raw_response(self) -> AsyncConversationMetaResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return AsyncConversationMetaResourceWithRawResponse(self)
@@ -223,7 +223,7 @@ def with_streaming_response(self) -> AsyncConversationMetaResourceWithStreamingR
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return AsyncConversationMetaResourceWithStreamingResponse(self)
diff --git a/src/evermemos/resources/v1/memories/memories.py b/src/evermemos/resources/v1/memories/memories.py
index 0756127..aabd1ee 100644
--- a/src/evermemos/resources/v1/memories/memories.py
+++ b/src/evermemos/resources/v1/memories/memories.py
@@ -46,7 +46,7 @@ def with_raw_response(self) -> MemoriesResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return MemoriesResourceWithRawResponse(self)
@@ -55,7 +55,7 @@ def with_streaming_response(self) -> MemoriesResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return MemoriesResourceWithStreamingResponse(self)
@@ -290,7 +290,7 @@ def with_raw_response(self) -> AsyncMemoriesResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return AsyncMemoriesResourceWithRawResponse(self)
@@ -299,7 +299,7 @@ def with_streaming_response(self) -> AsyncMemoriesResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return AsyncMemoriesResourceWithStreamingResponse(self)
diff --git a/src/evermemos/resources/v1/stats/request.py b/src/evermemos/resources/v1/stats/request.py
index 94b6354..865130b 100644
--- a/src/evermemos/resources/v1/stats/request.py
+++ b/src/evermemos/resources/v1/stats/request.py
@@ -30,7 +30,7 @@ def with_raw_response(self) -> RequestResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return RequestResourceWithRawResponse(self)
@@ -39,7 +39,7 @@ def with_streaming_response(self) -> RequestResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return RequestResourceWithStreamingResponse(self)
@@ -88,7 +88,7 @@ def with_raw_response(self) -> AsyncRequestResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return AsyncRequestResourceWithRawResponse(self)
@@ -97,7 +97,7 @@ def with_streaming_response(self) -> AsyncRequestResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return AsyncRequestResourceWithStreamingResponse(self)
diff --git a/src/evermemos/resources/v1/stats/stats.py b/src/evermemos/resources/v1/stats/stats.py
index a535c41..829bc66 100644
--- a/src/evermemos/resources/v1/stats/stats.py
+++ b/src/evermemos/resources/v1/stats/stats.py
@@ -27,7 +27,7 @@ def with_raw_response(self) -> StatsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return StatsResourceWithRawResponse(self)
@@ -36,7 +36,7 @@ def with_streaming_response(self) -> StatsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return StatsResourceWithStreamingResponse(self)
@@ -52,7 +52,7 @@ def with_raw_response(self) -> AsyncStatsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return AsyncStatsResourceWithRawResponse(self)
@@ -61,7 +61,7 @@ def with_streaming_response(self) -> AsyncStatsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return AsyncStatsResourceWithStreamingResponse(self)
diff --git a/src/evermemos/resources/v1/v1.py b/src/evermemos/resources/v1/v1.py
index 29274d6..8289662 100644
--- a/src/evermemos/resources/v1/v1.py
+++ b/src/evermemos/resources/v1/v1.py
@@ -39,7 +39,7 @@ def with_raw_response(self) -> V1ResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return V1ResourceWithRawResponse(self)
@@ -48,7 +48,7 @@ def with_streaming_response(self) -> V1ResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return V1ResourceWithStreamingResponse(self)
@@ -68,7 +68,7 @@ def with_raw_response(self) -> AsyncV1ResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
"""
return AsyncV1ResourceWithRawResponse(self)
@@ -77,7 +77,7 @@ def with_streaming_response(self) -> AsyncV1ResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response
+ For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
"""
return AsyncV1ResourceWithStreamingResponse(self)
From c6d796d7bbbec539954c1802094932a919d0b8e5 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 28 Jan 2026 11:46:12 +0000
Subject: [PATCH 3/4] chore: update SDK settings
---
.stats.yml | 2 +-
README.md | 11 ++++-------
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 1dd5ebd..a85760e 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 9
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-70486f52a522b1271f833cc3263dfe012c0ae7c0f1d520a18d45037cc9633511.yml
openapi_spec_hash: 3b4ed62d5425b7d7c4313c731b9f4959
-config_hash: 81e0b016bf2561036eec95f88cbd6707
+config_hash: 9bde077e7fec6b4fc6b5747ccb68227a
diff --git a/README.md b/README.md
index a8e8731..fe37220 100644
--- a/README.md
+++ b/README.md
@@ -16,13 +16,10 @@ The full API of this library can be found in [api.md](api.md).
## Installation
```sh
-# install from the production repo
-pip install git+ssh://git@github.com/evermemos/evermemos-python.git
+# install from PyPI
+pip install evermemos
```
-> [!NOTE]
-> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install evermemos`
-
## Usage
The full API of this library can be found in [api.md](api.md).
@@ -85,8 +82,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv
You can enable this by installing `aiohttp`:
```sh
-# install from the production repo
-pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/evermemos/evermemos-python.git'
+# install from PyPI
+pip install evermemos[aiohttp]
```
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
From c39e77a1975dd68526a95f1b85b2b13ae1eafab7 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 28 Jan 2026 11:54:20 +0000
Subject: [PATCH 4/4] release: 0.3.8
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 14 ++++++++++++++
pyproject.toml | 2 +-
src/evermemos/_version.py | 2 +-
4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 457d91e..ce81e00 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.3.7"
+ ".": "0.3.8"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6bafbb1..9c2521d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## 0.3.8 (2026-01-28)
+
+Full Changelog: [v0.3.7...v0.3.8](https://github.com/evermemos/evermemos-python/compare/v0.3.7...v0.3.8)
+
+### Features
+
+* **api:** api update ([e2cc79c](https://github.com/evermemos/evermemos-python/commit/e2cc79c7b19cd8da12385d59bd6fcb7e83be6c84))
+
+
+### Chores
+
+* update SDK settings ([c6d796d](https://github.com/evermemos/evermemos-python/commit/c6d796d7bbbec539954c1802094932a919d0b8e5))
+* update SDK settings ([11a1c09](https://github.com/evermemos/evermemos-python/commit/11a1c09da854becb6567ad5428db716e38e81ee0))
+
## 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)
diff --git a/pyproject.toml b/pyproject.toml
index a908309..8060d2a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "evermemos"
-version = "0.3.7"
+version = "0.3.8"
description = "The official Python library for the EverMemOS API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/evermemos/_version.py b/src/evermemos/_version.py
index 334c40d..fdbad9f 100644
--- a/src/evermemos/_version.py
+++ b/src/evermemos/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "evermemos"
-__version__ = "0.3.7" # x-release-please-version
+__version__ = "0.3.8" # x-release-please-version