Skip to content

Commit cd47eb3

Browse files
authored
Merge pull request #82 from letta-ai/release-please--branches--main--changes--next
release: 1.7.12
2 parents 202520c + 7cb7222 commit cd47eb3

29 files changed

+1034
-29
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,18 @@ jobs:
6161
run: rye build
6262

6363
- name: Get GitHub OIDC Token
64-
if: github.repository == 'stainless-sdks/letta-sdk-python'
64+
if: |-
65+
github.repository == 'stainless-sdks/letta-sdk-python' &&
66+
!startsWith(github.ref, 'refs/heads/stl/')
6567
id: github-oidc
6668
uses: actions/github-script@v8
6769
with:
6870
script: core.setOutput('github_token', await core.getIDToken());
6971

7072
- name: Upload tarball
71-
if: github.repository == 'stainless-sdks/letta-sdk-python'
73+
if: |-
74+
github.repository == 'stainless-sdks/letta-sdk-python' &&
75+
!startsWith(github.ref, 'refs/heads/stl/')
7276
env:
7377
URL: https://pkg.stainless.com/s
7478
AUTH: ${{ steps.github-oidc.outputs.github_token }}

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.7.11"
2+
".": "1.7.12"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 123
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/letta-ai%2Fletta-sdk-641193c8d6dd0ca97bc8f6ffc12534764d4cd9dda8fc5ace158397cb74b7787b.yml
3-
openapi_spec_hash: e0eef8afab116c4dba3540ab6fd26a8f
4-
config_hash: 98feceec44cc57270fce259ddbbec999
1+
configured_endpoints: 125
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/letta-ai%2Fletta-sdk-1c44d73b9152645e7b44512a238467b88c993a2c0151d5911b7f98d05583790e.yml
3+
openapi_spec_hash: e0633c52cd8d694e72211de731d1354a
4+
config_hash: 2dd2cc848568d7bec38b1cc774a5900c

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# Changelog
22

3+
## 1.7.12 (2026-03-09)
4+
5+
Full Changelog: [v1.7.11...v1.7.12](https://github.com/letta-ai/letta-python/compare/v1.7.11...v1.7.12)
6+
7+
### Features
8+
9+
* add conversation recompile endpoint ([65f0013](https://github.com/letta-ai/letta-python/commit/65f0013b623c195ec21ef627f0f2b68cce0be6ea))
10+
* add fireworks provider ([8b536c2](https://github.com/letta-ai/letta-python/commit/8b536c2d3709d421a493481b357e8aa254aa0779))
11+
* add recompile system endpoint to Stainless SDK ([40d9492](https://github.com/letta-ai/letta-python/commit/40d9492580644f1a9b922a0b510c5924a8d01482))
12+
* **core:** restructure memFS system prompt rendering + add client_skills [LET-7760] ([cc0756b](https://github.com/letta-ai/letta-python/commit/cc0756bfeea232f7d0b94b49e7fe8aa247ed9875))
13+
* **helm:** M3 multi-signal HPA external metrics + behavior (dev shadow, prod disabled) ([56f66ce](https://github.com/letta-ai/letta-python/commit/56f66cee54e0dfd0cb56156abe7744ee92434336))
14+
* **readiness:** M2 readiness enforcement scaffold (default OFF) ([5568b66](https://github.com/letta-ai/letta-python/commit/5568b66a784f913408125548fea2b2d9f8445e69))
15+
16+
17+
### Chores
18+
19+
* **ci:** skip uploading artifacts on stainless-internal branches ([c179828](https://github.com/letta-ai/letta-python/commit/c17982832afdfcf0d87f81d151f1f33bb9891dde))
20+
* update placeholder string ([7142275](https://github.com/letta-ai/letta-python/commit/71422757db6f3f9cd572ec32c27217f5229e1cee))
21+
322
## 1.7.11 (2026-03-04)
423

524
Full Changelog: [v1.7.10...v1.7.11](https://github.com/letta-ai/letta-python/compare/v1.7.10...v1.7.11)

api.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ from letta_client.types import (
4545
XaiModelSettings,
4646
AgentExportFileResponse,
4747
AgentImportFileResponse,
48+
AgentRecompileResponse,
4849
)
4950
```
5051

@@ -57,6 +58,7 @@ Methods:
5758
- <code title="delete /v1/agents/{agent_id}">client.agents.<a href="./src/letta_client/resources/agents/agents.py">delete</a>(agent_id) -> object</code>
5859
- <code title="get /v1/agents/{agent_id}/export">client.agents.<a href="./src/letta_client/resources/agents/agents.py">export_file</a>(agent_id, \*\*<a href="src/letta_client/types/agent_export_file_params.py">params</a>) -> str</code>
5960
- <code title="post /v1/agents/import">client.agents.<a href="./src/letta_client/resources/agents/agents.py">import_file</a>(\*\*<a href="src/letta_client/types/agent_import_file_params.py">params</a>) -> <a href="./src/letta_client/types/agent_import_file_response.py">AgentImportFileResponse</a></code>
61+
- <code title="post /v1/agents/{agent_id}/recompile">client.agents.<a href="./src/letta_client/resources/agents/agents.py">recompile</a>(agent_id, \*\*<a href="src/letta_client/types/agent_recompile_params.py">params</a>) -> str</code>
6062

6163
## Messages
6264

@@ -619,6 +621,7 @@ from letta_client.types import (
619621
UpdateConversation,
620622
ConversationListResponse,
621623
ConversationCancelResponse,
624+
ConversationRecompileResponse,
622625
)
623626
```
624627

@@ -630,6 +633,7 @@ Methods:
630633
- <code title="get /v1/conversations/">client.conversations.<a href="./src/letta_client/resources/conversations/conversations.py">list</a>(\*\*<a href="src/letta_client/types/conversation_list_params.py">params</a>) -> <a href="./src/letta_client/types/conversation_list_response.py">ConversationListResponse</a></code>
631634
- <code title="delete /v1/conversations/{conversation_id}">client.conversations.<a href="./src/letta_client/resources/conversations/conversations.py">delete</a>(conversation_id) -> object</code>
632635
- <code title="post /v1/conversations/{conversation_id}/cancel">client.conversations.<a href="./src/letta_client/resources/conversations/conversations.py">cancel</a>(conversation_id, \*\*<a href="src/letta_client/types/conversation_cancel_params.py">params</a>) -> <a href="./src/letta_client/types/conversation_cancel_response.py">ConversationCancelResponse</a></code>
636+
- <code title="post /v1/conversations/{conversation_id}/recompile">client.conversations.<a href="./src/letta_client/resources/conversations/conversations.py">recompile</a>(conversation_id, \*\*<a href="src/letta_client/types/conversation_recompile_params.py">params</a>) -> str</code>
633637

634638
## Messages
635639

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "letta-client"
3-
version = "1.7.11"
3+
version = "1.7.12"
44
description = "The official Python library for the letta API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"

src/letta_client/_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ def health(
367367
extra_body: Body | None = None,
368368
timeout: float | httpx.Timeout | None | NotGiven = not_given,
369369
) -> HealthResponse:
370-
"""Async health check endpoint."""
370+
"""Liveness endpoint; returns 200 when process is responsive."""
371371
return self.get(
372372
"/v1/health/",
373373
options=make_request_options(
@@ -684,7 +684,7 @@ async def health(
684684
extra_body: Body | None = None,
685685
timeout: float | httpx.Timeout | None | NotGiven = not_given,
686686
) -> HealthResponse:
687-
"""Async health check endpoint."""
687+
"""Liveness endpoint; returns 200 when process is responsive."""
688688
return await self.get(
689689
"/v1/health/",
690690
options=make_request_options(

src/letta_client/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
__title__ = "letta_client"
4-
__version__ = "1.7.11" # x-release-please-version
4+
__version__ = "1.7.12" # x-release-please-version

src/letta_client/resources/agents/agents.py

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
agent_create_params,
4040
agent_update_params,
4141
agent_retrieve_params,
42+
agent_recompile_params,
4243
agent_export_file_params,
4344
agent_import_file_params,
4445
)
@@ -1038,6 +1039,58 @@ def import_file(
10381039
cast_to=AgentImportFileResponse,
10391040
)
10401041

1042+
def recompile(
1043+
self,
1044+
agent_id: str,
1045+
*,
1046+
dry_run: bool | Omit = omit,
1047+
update_timestamp: bool | Omit = omit,
1048+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1049+
# The extra values given here take precedence over values defined on the client or passed to this method.
1050+
extra_headers: Headers | None = None,
1051+
extra_query: Query | None = None,
1052+
extra_body: Body | None = None,
1053+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
1054+
) -> str:
1055+
"""
1056+
Manually trigger system prompt recompilation for an agent.
1057+
1058+
Args:
1059+
agent_id: The ID of the agent in the format 'agent-<uuid4>'
1060+
1061+
dry_run: If True, do not persist changes; still returns the compiled system prompt.
1062+
1063+
update_timestamp: If True, update the in-context memory last edit timestamp embedded in the system
1064+
prompt.
1065+
1066+
extra_headers: Send extra headers
1067+
1068+
extra_query: Add additional query parameters to the request
1069+
1070+
extra_body: Add additional JSON properties to the request
1071+
1072+
timeout: Override the client-level default timeout for this request, in seconds
1073+
"""
1074+
if not agent_id:
1075+
raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}")
1076+
return self._post(
1077+
f"/v1/agents/{agent_id}/recompile",
1078+
options=make_request_options(
1079+
extra_headers=extra_headers,
1080+
extra_query=extra_query,
1081+
extra_body=extra_body,
1082+
timeout=timeout,
1083+
query=maybe_transform(
1084+
{
1085+
"dry_run": dry_run,
1086+
"update_timestamp": update_timestamp,
1087+
},
1088+
agent_recompile_params.AgentRecompileParams,
1089+
),
1090+
),
1091+
cast_to=str,
1092+
)
1093+
10411094

10421095
class AsyncAgentsResource(AsyncAPIResource):
10431096
@cached_property
@@ -1953,6 +2006,58 @@ async def import_file(
19532006
cast_to=AgentImportFileResponse,
19542007
)
19552008

2009+
async def recompile(
2010+
self,
2011+
agent_id: str,
2012+
*,
2013+
dry_run: bool | Omit = omit,
2014+
update_timestamp: bool | Omit = omit,
2015+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2016+
# The extra values given here take precedence over values defined on the client or passed to this method.
2017+
extra_headers: Headers | None = None,
2018+
extra_query: Query | None = None,
2019+
extra_body: Body | None = None,
2020+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
2021+
) -> str:
2022+
"""
2023+
Manually trigger system prompt recompilation for an agent.
2024+
2025+
Args:
2026+
agent_id: The ID of the agent in the format 'agent-<uuid4>'
2027+
2028+
dry_run: If True, do not persist changes; still returns the compiled system prompt.
2029+
2030+
update_timestamp: If True, update the in-context memory last edit timestamp embedded in the system
2031+
prompt.
2032+
2033+
extra_headers: Send extra headers
2034+
2035+
extra_query: Add additional query parameters to the request
2036+
2037+
extra_body: Add additional JSON properties to the request
2038+
2039+
timeout: Override the client-level default timeout for this request, in seconds
2040+
"""
2041+
if not agent_id:
2042+
raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}")
2043+
return await self._post(
2044+
f"/v1/agents/{agent_id}/recompile",
2045+
options=make_request_options(
2046+
extra_headers=extra_headers,
2047+
extra_query=extra_query,
2048+
extra_body=extra_body,
2049+
timeout=timeout,
2050+
query=await async_maybe_transform(
2051+
{
2052+
"dry_run": dry_run,
2053+
"update_timestamp": update_timestamp,
2054+
},
2055+
agent_recompile_params.AgentRecompileParams,
2056+
),
2057+
),
2058+
cast_to=str,
2059+
)
2060+
19562061

19572062
class AgentsResourceWithRawResponse:
19582063
def __init__(self, agents: AgentsResource) -> None:
@@ -1979,6 +2084,9 @@ def __init__(self, agents: AgentsResource) -> None:
19792084
self.import_file = to_raw_response_wrapper(
19802085
agents.import_file,
19812086
)
2087+
self.recompile = to_raw_response_wrapper(
2088+
agents.recompile,
2089+
)
19822090

19832091
@cached_property
19842092
def messages(self) -> MessagesResourceWithRawResponse:
@@ -2042,6 +2150,9 @@ def __init__(self, agents: AsyncAgentsResource) -> None:
20422150
self.import_file = async_to_raw_response_wrapper(
20432151
agents.import_file,
20442152
)
2153+
self.recompile = async_to_raw_response_wrapper(
2154+
agents.recompile,
2155+
)
20452156

20462157
@cached_property
20472158
def messages(self) -> AsyncMessagesResourceWithRawResponse:
@@ -2105,6 +2216,9 @@ def __init__(self, agents: AgentsResource) -> None:
21052216
self.import_file = to_streamed_response_wrapper(
21062217
agents.import_file,
21072218
)
2219+
self.recompile = to_streamed_response_wrapper(
2220+
agents.recompile,
2221+
)
21082222

21092223
@cached_property
21102224
def messages(self) -> MessagesResourceWithStreamingResponse:
@@ -2168,6 +2282,9 @@ def __init__(self, agents: AsyncAgentsResource) -> None:
21682282
self.import_file = async_to_streamed_response_wrapper(
21692283
agents.import_file,
21702284
)
2285+
self.recompile = async_to_streamed_response_wrapper(
2286+
agents.recompile,
2287+
)
21712288

21722289
@cached_property
21732290
def messages(self) -> AsyncMessagesResourceWithStreamingResponse:

0 commit comments

Comments
 (0)