letta-client 0.1.158__py3-none-any.whl → 0.1.160__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of letta-client might be problematic. Click here for more details.

letta_client/__init__.py CHANGED
@@ -205,6 +205,7 @@ from .types import (
205
205
  TextContent,
206
206
  TextResponseFormat,
207
207
  Tool,
208
+ ToolAnnotations,
208
209
  ToolCall,
209
210
  ToolCallContent,
210
211
  ToolCallDelta,
@@ -547,6 +548,7 @@ __all__ = [
547
548
  "TextContent",
548
549
  "TextResponseFormat",
549
550
  "Tool",
551
+ "ToolAnnotations",
550
552
  "ToolCall",
551
553
  "ToolCallContent",
552
554
  "ToolCallDelta",
@@ -438,6 +438,7 @@ class MessagesClient:
438
438
  agent_id: str,
439
439
  *,
440
440
  messages: typing.Sequence[MessageCreate],
441
+ callback_url: typing.Optional[str] = None,
441
442
  max_steps: typing.Optional[int] = OMIT,
442
443
  use_assistant_message: typing.Optional[bool] = OMIT,
443
444
  assistant_message_tool_name: typing.Optional[str] = OMIT,
@@ -456,6 +457,9 @@ class MessagesClient:
456
457
  messages : typing.Sequence[MessageCreate]
457
458
  The messages to be sent to the agent.
458
459
 
460
+ callback_url : typing.Optional[str]
461
+ Optional callback URL to POST to when the job completes
462
+
459
463
  max_steps : typing.Optional[int]
460
464
  Maximum number of steps the agent should take to process the request.
461
465
 
@@ -503,6 +507,9 @@ class MessagesClient:
503
507
  _response = self._client_wrapper.httpx_client.request(
504
508
  f"v1/agents/{jsonable_encoder(agent_id)}/messages/async",
505
509
  method="POST",
510
+ params={
511
+ "callback_url": callback_url,
512
+ },
506
513
  json={
507
514
  "messages": convert_and_respect_annotation_metadata(
508
515
  object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
@@ -1052,6 +1059,7 @@ class AsyncMessagesClient:
1052
1059
  agent_id: str,
1053
1060
  *,
1054
1061
  messages: typing.Sequence[MessageCreate],
1062
+ callback_url: typing.Optional[str] = None,
1055
1063
  max_steps: typing.Optional[int] = OMIT,
1056
1064
  use_assistant_message: typing.Optional[bool] = OMIT,
1057
1065
  assistant_message_tool_name: typing.Optional[str] = OMIT,
@@ -1070,6 +1078,9 @@ class AsyncMessagesClient:
1070
1078
  messages : typing.Sequence[MessageCreate]
1071
1079
  The messages to be sent to the agent.
1072
1080
 
1081
+ callback_url : typing.Optional[str]
1082
+ Optional callback URL to POST to when the job completes
1083
+
1073
1084
  max_steps : typing.Optional[int]
1074
1085
  Maximum number of steps the agent should take to process the request.
1075
1086
 
@@ -1125,6 +1136,9 @@ class AsyncMessagesClient:
1125
1136
  _response = await self._client_wrapper.httpx_client.request(
1126
1137
  f"v1/agents/{jsonable_encoder(agent_id)}/messages/async",
1127
1138
  method="POST",
1139
+ params={
1140
+ "callback_url": callback_url,
1141
+ },
1128
1142
  json={
1129
1143
  "messages": convert_and_respect_annotation_metadata(
1130
1144
  object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
@@ -16,7 +16,7 @@ class BaseClientWrapper:
16
16
  headers: typing.Dict[str, str] = {
17
17
  "X-Fern-Language": "Python",
18
18
  "X-Fern-SDK-Name": "letta-client",
19
- "X-Fern-SDK-Version": "0.1.158",
19
+ "X-Fern-SDK-Version": "0.1.160",
20
20
  }
21
21
  if self.token is not None:
22
22
  headers["Authorization"] = f"Bearer {self.token}"
@@ -208,6 +208,7 @@ from .terminal_tool_rule import TerminalToolRule
208
208
  from .text_content import TextContent
209
209
  from .text_response_format import TextResponseFormat
210
210
  from .tool import Tool
211
+ from .tool_annotations import ToolAnnotations
211
212
  from .tool_call import ToolCall
212
213
  from .tool_call_content import ToolCallContent
213
214
  from .tool_call_delta import ToolCallDelta
@@ -452,6 +453,7 @@ __all__ = [
452
453
  "TextContent",
453
454
  "TextResponseFormat",
454
455
  "Tool",
456
+ "ToolAnnotations",
455
457
  "ToolCall",
456
458
  "ToolCallContent",
457
459
  "ToolCallDelta",
@@ -2,4 +2,4 @@
2
2
 
3
3
  import typing
4
4
 
5
- McpServerType = typing.Union[typing.Literal["sse", "stdio"], typing.Any]
5
+ McpServerType = typing.Union[typing.Literal["sse", "stdio", "streamable_http"], typing.Any]
@@ -4,6 +4,7 @@ from ..core.unchecked_base_model import UncheckedBaseModel
4
4
  import typing
5
5
  import typing_extensions
6
6
  from ..core.serialization import FieldMetadata
7
+ from .tool_annotations import ToolAnnotations
7
8
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
9
  import pydantic
9
10
 
@@ -18,6 +19,7 @@ class McpTool(UncheckedBaseModel):
18
19
  input_schema: typing_extensions.Annotated[
19
20
  typing.Dict[str, typing.Optional[typing.Any]], FieldMetadata(alias="inputSchema")
20
21
  ]
22
+ annotations: typing.Optional[ToolAnnotations] = None
21
23
 
22
24
  if IS_PYDANTIC_V2:
23
25
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -8,6 +8,17 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
8
 
9
9
 
10
10
  class SseServerConfig(UncheckedBaseModel):
11
+ """
12
+ Configuration for an MCP server using SSE
13
+
14
+ Authentication can be provided in multiple ways:
15
+ 1. Using auth_header + auth_token: Will add a specific header with the token
16
+ Example: auth_header="Authorization", auth_token="Bearer abc123"
17
+
18
+ 2. Using the custom_headers dict: For more complex authentication scenarios
19
+ Example: custom_headers={"X-API-Key": "abc123", "X-Custom-Header": "value"}
20
+ """
21
+
11
22
  server_name: str = pydantic.Field()
12
23
  """
13
24
  The name of the server
@@ -19,6 +30,21 @@ class SseServerConfig(UncheckedBaseModel):
19
30
  The URL of the server (MCP SSE client will connect to this URL)
20
31
  """
21
32
 
33
+ auth_header: typing.Optional[str] = pydantic.Field(default=None)
34
+ """
35
+ The name of the authentication header (e.g., 'Authorization')
36
+ """
37
+
38
+ auth_token: typing.Optional[str] = pydantic.Field(default=None)
39
+ """
40
+ The authentication token or API key value
41
+ """
42
+
43
+ custom_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = pydantic.Field(default=None)
44
+ """
45
+ Custom HTTP headers to include with SSE requests
46
+ """
47
+
22
48
  if IS_PYDANTIC_V2:
23
49
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
24
50
  else:
@@ -0,0 +1,36 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ import typing_extensions
6
+ from ..core.serialization import FieldMetadata
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+ import pydantic
9
+
10
+
11
+ class ToolAnnotations(UncheckedBaseModel):
12
+ """
13
+ Additional properties describing a Tool to clients.
14
+
15
+ NOTE: all properties in ToolAnnotations are **hints**.
16
+ They are not guaranteed to provide a faithful description of
17
+ tool behavior (including descriptive properties like `title`).
18
+
19
+ Clients should never make tool use decisions based on ToolAnnotations
20
+ received from untrusted servers.
21
+ """
22
+
23
+ title: typing.Optional[str] = None
24
+ read_only_hint: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="readOnlyHint")] = None
25
+ destructive_hint: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="destructiveHint")] = None
26
+ idempotent_hint: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="idempotentHint")] = None
27
+ open_world_hint: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="openWorldHint")] = None
28
+
29
+ if IS_PYDANTIC_V2:
30
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
31
+ else:
32
+
33
+ class Config:
34
+ frozen = True
35
+ smart_union = True
36
+ extra = pydantic.Extra.allow
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-client
3
- Version: 0.1.158
3
+ Version: 0.1.160
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,4 +1,4 @@
1
- letta_client/__init__.py,sha256=2X95vFIKPYYoAtp_d437qy_T9kGhn3tSjgvglH3upKE,17194
1
+ letta_client/__init__.py,sha256=glnhnX4D68CyvKpQaE5MZg0hobKzThfIUMTzxN537t8,17238
2
2
  letta_client/agents/__init__.py,sha256=3oFWVxaaxkphkjGJVk31Llb9ll9dKoCGx3B_r3qqtes,1716
3
3
  letta_client/agents/blocks/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
4
4
  letta_client/agents/blocks/client.py,sha256=ecE03lE5tP1AtCMFLT9FzdYyQMx_D7NI5m42b41pV40,24684
@@ -14,7 +14,7 @@ letta_client/agents/memory_variables/client.py,sha256=6qFVbR_tdfqj4HQ1h1HXR8DZCV
14
14
  letta_client/agents/memory_variables/types/__init__.py,sha256=EoznK0WvhCyFYd4KDdU-cGDQWpSXmq79BSkqVHN-j7A,180
15
15
  letta_client/agents/memory_variables/types/memory_variables_list_response.py,sha256=bsF__n_B4ZXEHzg--OVD6tHHXt_aM-FjHm2x1ZXPnL0,599
16
16
  letta_client/agents/messages/__init__.py,sha256=M7Ar6Rmb8we4dfYE6jj3FCL9UvVFy1bNQIPflUXMWHA,243
17
- letta_client/agents/messages/client.py,sha256=g_tE8kPO16g9aDrPPiMV_62R1yRxYDs-aU7iVEUMn6A,45087
17
+ letta_client/agents/messages/client.py,sha256=4aSoniRmqmAOpi1bvGPm6Uj5QNuUqDIeIJe4LGDoELk,45579
18
18
  letta_client/agents/messages/types/__init__.py,sha256=Oc2j0oGOs96IEFf9xsJIkjBjoq3OMtse64YwWv3F9Io,335
19
19
  letta_client/agents/messages/types/letta_streaming_response.py,sha256=8VR2F32xjoPFXL4YBvBbAZclaJG4ENPTjk7BrlZkmtw,742
20
20
  letta_client/agents/messages/types/messages_modify_request.py,sha256=7C2X3BKye-YDSXOkdEmxxt34seI4jkLK0-govtc4nhg,475
@@ -62,7 +62,7 @@ letta_client/client_side_access_tokens/types/client_side_access_tokens_create_re
62
62
  letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy_data_item_access_item.py,sha256=R-H25IpNp9feSrW8Yj3h9O3UTMVvFniQJElogKxLuoE,254
63
63
  letta_client/core/__init__.py,sha256=OKbX2aCZXgHCDUsCouqv-OiX32xA6eFFCKIUH9M5Vzk,1591
64
64
  letta_client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
65
- letta_client/core/client_wrapper.py,sha256=nKg5nPtYoLHksAm6lUSNv3-Pw5OsuE2E5Gbkr-eEoBo,1998
65
+ letta_client/core/client_wrapper.py,sha256=OR7PC0iFjMX-HCpZ4mNlEtGxyLpJH8MQuu_BOLQSH_o,1998
66
66
  letta_client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
67
67
  letta_client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
68
68
  letta_client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
@@ -150,7 +150,7 @@ letta_client/tools/types/add_mcp_server_request.py,sha256=EieZjfOT95sjkpxXdqy7gl
150
150
  letta_client/tools/types/add_mcp_server_response_item.py,sha256=pb3A4IoP7Qpen0UDDniXrASYEJZWnYnnrZThtPkvZt4,270
151
151
  letta_client/tools/types/delete_mcp_server_response_item.py,sha256=hKc4uehqcubO8BzpgMlvk2jJAjHXOWRM_zmWsCz_vZE,273
152
152
  letta_client/tools/types/list_mcp_servers_response_value.py,sha256=AIoXu4bO8QNSU7zjL1jj0Rg4313wVtPaTt13W0aevLQ,273
153
- letta_client/types/__init__.py,sha256=4sJJKkC2a_9Tt-jwNSuO_he06cojsUlkYpk45V3cL3Q,21720
153
+ letta_client/types/__init__.py,sha256=QQWOfs0PC9QLo9L7vXvkcNVdGqaZFV2j1mmeNj8o1fI,21789
154
154
  letta_client/types/action_model.py,sha256=y1e2XMv3skFaNJIBdYoBKgiORzGh05aOVvu-qVR9uHg,1240
155
155
  letta_client/types/action_parameters_model.py,sha256=LgKf5aPZG3-OHGxFdXiSokIDgce8c02xPYIAY05VgW8,828
156
156
  letta_client/types/action_response_model.py,sha256=yq2Fd9UU8j7vvtE3VqXUoRRvDzWcfJPj_95ynGdeHCs,824
@@ -291,8 +291,8 @@ letta_client/types/local_sandbox_config.py,sha256=jfe7akG_YrJJ8csLaLdev04Zg1x-PT
291
291
  letta_client/types/manager_type.py,sha256=3ztXv2xWw6PIgDoqqxaHwdIcssDYqdqB0KqUDSW3Bc0,222
292
292
  letta_client/types/max_count_per_step_tool_rule.py,sha256=6vBWeGH2FW3ze--lr4DVuqG5aikPjKAAwHd4bfv4YcM,1225
293
293
  letta_client/types/max_count_per_step_tool_rule_schema.py,sha256=1Zq4vblRTqFycqk7cBQ3gVCUy-MPWvE_tNXV5Fz0VTs,618
294
- letta_client/types/mcp_server_type.py,sha256=Hv45mKMPzmey2UVjwrTAvWXP1sDd13UwAtvtogBloLo,153
295
- letta_client/types/mcp_tool.py,sha256=_GSTb0k8l-IUEflRkQ6-v45UnbTcA4Nv1N8sgmExJQ0,912
294
+ letta_client/types/mcp_server_type.py,sha256=cEiRY8zJw3YdV0RV6tt4JUYd0AHT_UNeLgxaouU-_4A,172
295
+ letta_client/types/mcp_tool.py,sha256=1Bdh9eDfLWxEB_5spzGXImmcoEQ2XRo8BTaeolaMA1M,1015
296
296
  letta_client/types/memory.py,sha256=Fa07vLHBsc4eNK65Yla2zOuzYhtgFGlnPzAGo9GvJ-c,1210
297
297
  letta_client/types/message.py,sha256=xLOrSRBL3GHlEN_aZAVR_ruftSqqDMu3CVnRnB01ZD0,4493
298
298
  letta_client/types/message_content_item.py,sha256=FrwERKfU5MpV4Y8LC5ejKFkoqqSV_Ooww-r32VGBbME,629
@@ -343,7 +343,7 @@ letta_client/types/sandbox_type.py,sha256=XSWmX3JIFFrDPQ4i89E8LauXY8kjmJEtaz6e_J
343
343
  letta_client/types/sleeptime_manager.py,sha256=oKI3CCoA4guwktWs1bbPdCmv9jg94EeMvbXQWvzbt6M,778
344
344
  letta_client/types/sleeptime_manager_update.py,sha256=JMzgtvGMDI5VBzlTuzm4FpuFAL7uwPbQgN9TYxip93s,813
345
345
  letta_client/types/source.py,sha256=BsfE9yrefXREQtskGZnR-TFGqmHkFKIGHC5udtHUi14,2370
346
- letta_client/types/sse_server_config.py,sha256=b-h5FLm5MELZ5A9bwZt-02Zx_f3UbfKAQS--yHQVOQU,844
346
+ letta_client/types/sse_server_config.py,sha256=IN-FdECflYF-XiIM_fvVOwyDu215Csoixepv44PAVvQ,1738
347
347
  letta_client/types/stdio_server_config.py,sha256=dEQ7bguiLikGemLxYZJ3JCmmEQgAMsSPO_P52oHZSl0,1091
348
348
  letta_client/types/step.py,sha256=-5KHfBc6NZnYGLXHJMK6Bdyw2ae0G1zPFzsURjPiN3c,3133
349
349
  letta_client/types/stop_reason_type.py,sha256=PyYTS9bIvCSDfzyG4wJyk6bi9fCdDBNsoleLd7nMJYI,228
@@ -355,6 +355,7 @@ letta_client/types/terminal_tool_rule.py,sha256=E9XJMsIOAAERnTztXhbB0z4P-oBH0Bxn
355
355
  letta_client/types/text_content.py,sha256=Z8UL4Sqqq2qClKU_nCgR9XFCj3dwYyhZMmvnnz1F0AE,670
356
356
  letta_client/types/text_response_format.py,sha256=daIziOp-O4cEDqFH1CSIqb0p5BL721_kA0JSOtWlt0k,654
357
357
  letta_client/types/tool.py,sha256=5BtitT8tljb53PAVCZWeeKX6sLDUajgGAAJ2mJhiBp0,3054
358
+ letta_client/types/tool_annotations.py,sha256=Is8FsHSHmA1NsH9_gx9f99I7Er4Xix2GV0khCjw7mGE,1504
358
359
  letta_client/types/tool_call.py,sha256=EKGAFwzoa6zMTpOkG55hWzFn_AgPrbLXSOu5M84x8WU,594
359
360
  letta_client/types/tool_call_content.py,sha256=5aceJgOQSkL05Hw5LXG49yxN8CmTcp6jj9aeQp-Wtks,995
360
361
  letta_client/types/tool_call_delta.py,sha256=wGeZwJ9pwYHD5-f4Unf5-vJqefK40eHw9i0w3bCjRoE,671
@@ -396,6 +397,6 @@ letta_client/types/web_search_options_user_location_approximate.py,sha256=Ywk01J
396
397
  letta_client/version.py,sha256=bttKLbIhO3UonCYQlqs600zzbQgfhCCMjeXR9WRzid4,79
397
398
  letta_client/voice/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
398
399
  letta_client/voice/client.py,sha256=EX79F2D5bieXNP8g1ZPw8xwAzqE1A3hshCHUSlTV1kw,5739
399
- letta_client-0.1.158.dist-info/METADATA,sha256=TADPzFpKPXVxzN0-didPXQNa94hW9b36Tzq96tj5y2Y,5093
400
- letta_client-0.1.158.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
401
- letta_client-0.1.158.dist-info/RECORD,,
400
+ letta_client-0.1.160.dist-info/METADATA,sha256=E1btYPdmlSnSdNg8p1mwJR9FgPX-xcwcmRKVtxQvDeY,5093
401
+ letta_client-0.1.160.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
402
+ letta_client-0.1.160.dist-info/RECORD,,