letta-nightly 0.6.34.dev20250303104329__py3-none-any.whl → 0.6.35.dev20250304104154__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-nightly might be problematic. Click here for more details.

Files changed (55) hide show
  1. letta/__init__.py +1 -1
  2. letta/agent.py +40 -15
  3. letta/agents/__init__.py +0 -0
  4. letta/agents/base_agent.py +51 -0
  5. letta/agents/ephemeral_agent.py +72 -0
  6. letta/agents/low_latency_agent.py +315 -0
  7. letta/constants.py +3 -1
  8. letta/functions/ast_parsers.py +50 -1
  9. letta/functions/helpers.py +79 -2
  10. letta/functions/schema_generator.py +3 -0
  11. letta/helpers/converters.py +3 -3
  12. letta/interfaces/__init__.py +0 -0
  13. letta/interfaces/openai_chat_completions_streaming_interface.py +109 -0
  14. letta/interfaces/utils.py +11 -0
  15. letta/llm_api/anthropic.py +9 -1
  16. letta/llm_api/azure_openai.py +3 -0
  17. letta/llm_api/google_ai.py +3 -0
  18. letta/llm_api/google_vertex.py +4 -0
  19. letta/llm_api/llm_api_tools.py +1 -1
  20. letta/llm_api/openai.py +6 -0
  21. letta/local_llm/chat_completion_proxy.py +6 -1
  22. letta/log.py +2 -2
  23. letta/orm/step.py +1 -0
  24. letta/orm/tool.py +1 -1
  25. letta/prompts/system/memgpt_convo_only.txt +3 -5
  26. letta/prompts/system/memgpt_memory_only.txt +29 -0
  27. letta/schemas/agent.py +0 -1
  28. letta/schemas/step.py +1 -1
  29. letta/schemas/tool.py +16 -2
  30. letta/server/rest_api/app.py +5 -1
  31. letta/server/rest_api/routers/v1/agents.py +32 -21
  32. letta/server/rest_api/routers/v1/identities.py +9 -1
  33. letta/server/rest_api/routers/v1/runs.py +49 -0
  34. letta/server/rest_api/routers/v1/tools.py +1 -0
  35. letta/server/rest_api/routers/v1/voice.py +19 -255
  36. letta/server/rest_api/utils.py +3 -2
  37. letta/server/server.py +15 -7
  38. letta/services/agent_manager.py +10 -6
  39. letta/services/helpers/agent_manager_helper.py +0 -2
  40. letta/services/helpers/tool_execution_helper.py +18 -0
  41. letta/services/job_manager.py +98 -0
  42. letta/services/step_manager.py +2 -0
  43. letta/services/summarizer/__init__.py +0 -0
  44. letta/services/summarizer/enums.py +9 -0
  45. letta/services/summarizer/summarizer.py +102 -0
  46. letta/services/tool_execution_sandbox.py +20 -3
  47. letta/services/tool_manager.py +1 -1
  48. letta/settings.py +2 -0
  49. letta/tracing.py +176 -156
  50. {letta_nightly-0.6.34.dev20250303104329.dist-info → letta_nightly-0.6.35.dev20250304104154.dist-info}/METADATA +6 -5
  51. {letta_nightly-0.6.34.dev20250303104329.dist-info → letta_nightly-0.6.35.dev20250304104154.dist-info}/RECORD +54 -44
  52. letta/chat_only_agent.py +0 -101
  53. {letta_nightly-0.6.34.dev20250303104329.dist-info → letta_nightly-0.6.35.dev20250304104154.dist-info}/LICENSE +0 -0
  54. {letta_nightly-0.6.34.dev20250303104329.dist-info → letta_nightly-0.6.35.dev20250304104154.dist-info}/WHEEL +0 -0
  55. {letta_nightly-0.6.34.dev20250303104329.dist-info → letta_nightly-0.6.35.dev20250304104154.dist-info}/entry_points.txt +0 -0
letta/tracing.py CHANGED
@@ -1,205 +1,225 @@
1
- import asyncio
2
1
  import inspect
2
+ import re
3
3
  import sys
4
4
  import time
5
5
  from functools import wraps
6
- from typing import Any, Dict, Optional
6
+ from typing import Any, Dict, List, Optional
7
7
 
8
- from fastapi import Request
8
+ from fastapi import Depends, FastAPI, HTTPException, Request
9
+ from fastapi.exceptions import RequestValidationError
10
+ from fastapi.responses import JSONResponse
9
11
  from opentelemetry import trace
10
- from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
12
+ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
11
13
  from opentelemetry.instrumentation.requests import RequestsInstrumentor
12
14
  from opentelemetry.sdk.resources import Resource
13
15
  from opentelemetry.sdk.trace import TracerProvider
14
16
  from opentelemetry.sdk.trace.export import BatchSpanProcessor
15
- from opentelemetry.trace import Span, Status, StatusCode
17
+ from opentelemetry.trace import Status, StatusCode
16
18
 
17
- # Get a tracer instance - will be no-op until setup_tracing is called
18
19
  tracer = trace.get_tracer(__name__)
19
-
20
- # Track if tracing has been initialized
21
20
  _is_tracing_initialized = False
21
+ _excluded_v1_endpoints_regex: List[str] = [
22
+ "^GET /v1/agents/(?P<agent_id>[^/]+)/messages$",
23
+ "^GET /v1/agents/(?P<agent_id>[^/]+)/context$",
24
+ "^GET /v1/agents/(?P<agent_id>[^/]+)/archival-memory$",
25
+ "^GET /v1/agents/(?P<agent_id>[^/]+)/sources$",
26
+ ]
22
27
 
23
28
 
24
29
  def is_pytest_environment():
25
- """Check if we're running in pytest"""
26
30
  return "pytest" in sys.modules
27
31
 
28
32
 
29
- def trace_method(name=None):
30
- """Decorator to add tracing to a method"""
33
+ async def trace_request_middleware(request: Request, call_next):
34
+ if not _is_tracing_initialized:
35
+ return await call_next(request)
36
+ initial_span_name = f"{request.method} {request.url.path}"
37
+ if any(re.match(regex, initial_span_name) for regex in _excluded_v1_endpoints_regex):
38
+ return await call_next(request)
31
39
 
32
- def decorator(func):
33
- @wraps(func)
34
- async def async_wrapper(*args, **kwargs):
35
- # Skip tracing if not initialized
36
- if not _is_tracing_initialized:
37
- return await func(*args, **kwargs)
40
+ with tracer.start_as_current_span(
41
+ initial_span_name,
42
+ kind=trace.SpanKind.SERVER,
43
+ ) as span:
44
+ try:
45
+ response = await call_next(request)
46
+ span.set_attribute("http.status_code", response.status_code)
47
+ span.set_status(Status(StatusCode.OK if response.status_code < 400 else StatusCode.ERROR))
48
+ return response
49
+ except Exception as e:
50
+ span.set_status(Status(StatusCode.ERROR))
51
+ span.record_exception(e)
52
+ raise
38
53
 
39
- span_name = name or func.__name__
40
- with tracer.start_as_current_span(span_name) as span:
41
- span.set_attribute("code.namespace", inspect.getmodule(func).__name__)
42
- span.set_attribute("code.function", func.__name__)
43
54
 
44
- if len(args) > 0 and hasattr(args[0], "__class__"):
45
- span.set_attribute("code.class", args[0].__class__.__name__)
55
+ async def update_trace_attributes(request: Request):
56
+ """Dependency to update trace attributes after FastAPI has processed the request"""
57
+ if not _is_tracing_initialized:
58
+ return
46
59
 
47
- request = _extract_request_info(args, span)
48
- if request and len(request) > 0:
49
- span.set_attribute("agent.id", kwargs.get("agent_id"))
50
- span.set_attribute("actor.id", request.get("http.user_id"))
60
+ span = trace.get_current_span()
61
+ if not span:
62
+ return
51
63
 
52
- try:
53
- result = await func(*args, **kwargs)
54
- span.set_status(Status(StatusCode.OK))
55
- return result
56
- except Exception as e:
57
- span.set_status(Status(StatusCode.ERROR))
58
- span.record_exception(e)
59
- raise
64
+ # Update span name with route pattern
65
+ route = request.scope.get("route")
66
+ if route and hasattr(route, "path"):
67
+ span.update_name(f"{request.method} {route.path}")
68
+
69
+ # Add request info
70
+ span.set_attribute("http.method", request.method)
71
+ span.set_attribute("http.url", str(request.url))
72
+
73
+ # Add path params
74
+ for key, value in request.path_params.items():
75
+ span.set_attribute(f"http.{key}", value)
76
+
77
+ # Add request body if available
78
+ try:
79
+ body = await request.json()
80
+ for key, value in body.items():
81
+ span.set_attribute(f"http.request.body.{key}", str(value))
82
+ except Exception:
83
+ pass
84
+
85
+
86
+ async def trace_error_handler(_request: Request, exc: Exception) -> JSONResponse:
87
+ status_code = getattr(exc, "status_code", 500)
88
+ error_msg = str(exc)
89
+
90
+ # Add error details to current span
91
+ span = trace.get_current_span()
92
+ if span:
93
+ span.add_event(
94
+ name="exception",
95
+ attributes={
96
+ "exception.message": error_msg,
97
+ "exception.type": type(exc).__name__,
98
+ },
99
+ )
60
100
 
61
- @wraps(func)
62
- def sync_wrapper(*args, **kwargs):
63
- # Skip tracing if not initialized
64
- if not _is_tracing_initialized:
65
- return func(*args, **kwargs)
101
+ return JSONResponse(status_code=status_code, content={"detail": error_msg, "trace_id": get_trace_id() or ""})
66
102
 
67
- span_name = name or func.__name__
68
- with tracer.start_as_current_span(span_name) as span:
69
- span.set_attribute("code.namespace", inspect.getmodule(func).__name__)
70
- span.set_attribute("code.function", func.__name__)
71
103
 
72
- if len(args) > 0 and hasattr(args[0], "__class__"):
73
- span.set_attribute("code.class", args[0].__class__.__name__)
104
+ def setup_tracing(
105
+ endpoint: str,
106
+ app: Optional[FastAPI] = None,
107
+ service_name: str = "memgpt-server",
108
+ ) -> None:
109
+ if is_pytest_environment():
110
+ return
74
111
 
75
- request = _extract_request_info(args, span)
76
- if request and len(request) > 0:
77
- span.set_attribute("agent.id", kwargs.get("agent_id"))
78
- span.set_attribute("actor.id", request.get("http.user_id"))
112
+ global _is_tracing_initialized
79
113
 
80
- try:
81
- result = func(*args, **kwargs)
82
- span.set_status(Status(StatusCode.OK))
83
- return result
84
- except Exception as e:
85
- span.set_status(Status(StatusCode.ERROR))
86
- span.record_exception(e)
87
- raise
114
+ provider = TracerProvider(resource=Resource.create({"service.name": service_name}))
115
+ if endpoint:
116
+ provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint=endpoint)))
117
+ _is_tracing_initialized = True
118
+ trace.set_tracer_provider(provider)
88
119
 
89
- return async_wrapper if asyncio.iscoroutinefunction(func) else sync_wrapper
120
+ def requests_callback(span: trace.Span, _: Any, response: Any) -> None:
121
+ if hasattr(response, "status_code"):
122
+ span.set_status(Status(StatusCode.OK if response.status_code < 400 else StatusCode.ERROR))
90
123
 
91
- return decorator
124
+ RequestsInstrumentor().instrument(response_hook=requests_callback)
92
125
 
126
+ if app:
127
+ # Add middleware first
128
+ app.middleware("http")(trace_request_middleware)
93
129
 
94
- def log_attributes(attributes: Dict[str, Any]) -> None:
95
- """
96
- Log multiple attributes to the current active span.
130
+ # Add dependency to v1 routes
131
+ from letta.server.rest_api.routers.v1 import ROUTERS as v1_routes
97
132
 
98
- Args:
99
- attributes: Dictionary of attribute key-value pairs
100
- """
101
- current_span = trace.get_current_span()
102
- if current_span:
103
- current_span.set_attributes(attributes)
133
+ for router in v1_routes:
134
+ for route in router.routes:
135
+ full_path = ((next(iter(route.methods)) + " ") if route.methods else "") + "/v1" + route.path
136
+ if not any(re.match(regex, full_path) for regex in _excluded_v1_endpoints_regex):
137
+ route.dependencies.append(Depends(update_trace_attributes))
104
138
 
139
+ # Register exception handlers
140
+ app.exception_handler(HTTPException)(trace_error_handler)
141
+ app.exception_handler(RequestValidationError)(trace_error_handler)
142
+ app.exception_handler(Exception)(trace_error_handler)
105
143
 
106
- def log_event(name: str, attributes: Optional[Dict[str, Any]] = None, timestamp: Optional[int] = None) -> None:
107
- """
108
- Log an event to the current active span.
109
-
110
- Args:
111
- name: Name of the event
112
- attributes: Optional dictionary of event attributes
113
- timestamp: Optional timestamp in nanoseconds
114
- """
115
- current_span = trace.get_current_span()
116
- if current_span:
117
- if timestamp is None:
118
- timestamp = int(time.perf_counter_ns())
119
144
 
120
- current_span.add_event(name=name, attributes=attributes, timestamp=timestamp)
145
+ def trace_method(func):
146
+ """Decorator that traces function execution with OpenTelemetry"""
121
147
 
148
+ def _get_span_name(func, args):
149
+ if args and hasattr(args[0], "__class__"):
150
+ class_name = args[0].__class__.__name__
151
+ else:
152
+ class_name = func.__module__
153
+ return f"{class_name}.{func.__name__}"
122
154
 
123
- def get_trace_id() -> str:
124
- current_span = trace.get_current_span()
125
- if current_span:
126
- return format(current_span.get_span_context().trace_id, "032x")
127
- else:
128
- return ""
155
+ def _add_parameters_to_span(span, func, args, kwargs):
156
+ try:
157
+ # Add method parameters as span attributes
158
+ sig = inspect.signature(func)
159
+ bound_args = sig.bind(*args, **kwargs)
160
+ bound_args.apply_defaults()
129
161
 
162
+ # Skip 'self' when adding parameters if it exists
163
+ param_items = list(bound_args.arguments.items())
164
+ if args and hasattr(args[0], "__class__"):
165
+ param_items = param_items[1:]
130
166
 
131
- def request_hook(span: Span, _request_context: Optional[Dict] = None, response: Optional[Any] = None):
132
- """Hook to update span based on response status code"""
133
- if response is not None:
134
- if hasattr(response, "status_code"):
135
- span.set_attribute("http.status_code", response.status_code)
136
- if response.status_code >= 400:
137
- span.set_status(Status(StatusCode.ERROR))
138
- elif 200 <= response.status_code < 300:
139
- span.set_status(Status(StatusCode.OK))
167
+ for name, value in param_items:
168
+ # Convert value to string to avoid serialization issues
169
+ span.set_attribute(f"parameter.{name}", str(value))
170
+ except:
171
+ pass
140
172
 
173
+ @wraps(func)
174
+ async def async_wrapper(*args, **kwargs):
175
+ if not _is_tracing_initialized:
176
+ return await func(*args, **kwargs)
141
177
 
142
- def setup_tracing(endpoint: str, service_name: str = "memgpt-server") -> None:
143
- """
144
- Sets up OpenTelemetry tracing with OTLP exporter for specific endpoints
178
+ with tracer.start_as_current_span(_get_span_name(func, args)) as span:
179
+ _add_parameters_to_span(span, func, args, kwargs)
145
180
 
146
- Args:
147
- endpoint: OTLP endpoint URL
148
- service_name: Name of the service for tracing
149
- """
150
- global _is_tracing_initialized
181
+ result = await func(*args, **kwargs)
182
+ span.set_status(Status(StatusCode.OK))
183
+ return result
151
184
 
152
- # Skip tracing in pytest environment
153
- if is_pytest_environment():
154
- print("ℹ️ Skipping tracing setup in pytest environment")
155
- return
185
+ @wraps(func)
186
+ def sync_wrapper(*args, **kwargs):
187
+ if not _is_tracing_initialized:
188
+ return func(*args, **kwargs)
156
189
 
157
- # Create a Resource to identify our service
158
- resource = Resource.create({"service.name": service_name, "service.namespace": "default", "deployment.environment": "production"})
190
+ with tracer.start_as_current_span(_get_span_name(func, args)) as span:
191
+ _add_parameters_to_span(span, func, args, kwargs)
159
192
 
160
- # Initialize the TracerProvider with the resource
161
- provider = TracerProvider(resource=resource)
193
+ result = func(*args, **kwargs)
194
+ span.set_status(Status(StatusCode.OK))
195
+ return result
196
+
197
+ return async_wrapper if inspect.iscoroutinefunction(func) else sync_wrapper
198
+
199
+
200
+ def log_attributes(attributes: Dict[str, Any]) -> None:
201
+ current_span = trace.get_current_span()
202
+ if current_span:
203
+ current_span.set_attributes(attributes)
204
+
205
+
206
+ def log_event(name: str, attributes: Optional[Dict[str, Any]] = None, timestamp: Optional[int] = None) -> None:
207
+ current_span = trace.get_current_span()
208
+ if current_span:
209
+ if timestamp is None:
210
+ timestamp = int(time.perf_counter_ns())
211
+
212
+ def _safe_convert(v):
213
+ if isinstance(v, (str, bool, int, float)):
214
+ return v
215
+ return str(v)
216
+
217
+ attributes = {k: _safe_convert(v) for k, v in attributes.items()} if attributes else None
218
+ current_span.add_event(name=name, attributes=attributes, timestamp=timestamp)
162
219
 
163
- # Only set up OTLP export if endpoint is provided
164
- if endpoint:
165
- otlp_exporter = OTLPSpanExporter(endpoint=endpoint)
166
- processor = BatchSpanProcessor(otlp_exporter)
167
- provider.add_span_processor(processor)
168
- _is_tracing_initialized = True
169
- else:
170
- print("⚠️ Warning: Tracing endpoint not provided, tracing will be disabled")
171
-
172
- # Set the global TracerProvider
173
- trace.set_tracer_provider(provider)
174
-
175
- # Initialize automatic instrumentation for the requests library with response hook
176
- if _is_tracing_initialized:
177
- RequestsInstrumentor().instrument(response_hook=request_hook)
178
-
179
-
180
- def _extract_request_info(args: tuple, span: Span) -> Dict[str, Any]:
181
- """
182
- Safely extracts request information from function arguments.
183
- Works with both FastAPI route handlers and inner functions.
184
- """
185
- attributes = {}
186
-
187
- # Look for FastAPI Request object in args
188
- request = next((arg for arg in args if isinstance(arg, Request)), None)
189
-
190
- if request:
191
- attributes.update(
192
- {
193
- "http.route": request.url.path,
194
- "http.method": request.method,
195
- "http.scheme": request.url.scheme,
196
- "http.target": str(request.url.path),
197
- "http.url": str(request.url),
198
- "http.flavor": request.scope.get("http_version", ""),
199
- "http.client_ip": request.client.host if request.client else None,
200
- "http.user_id": request.headers.get("user_id"),
201
- }
202
- )
203
220
 
204
- span.set_attributes(attributes)
205
- return attributes
221
+ def get_trace_id() -> Optional[str]:
222
+ span = trace.get_current_span()
223
+ if span and span.get_span_context().trace_id:
224
+ return format(span.get_span_context().trace_id, "032x")
225
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.34.dev20250303104329
3
+ Version: 0.6.35.dev20250304104154
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -30,6 +30,7 @@ Requires-Dist: brotli (>=1.1.0,<2.0.0)
30
30
  Requires-Dist: colorama (>=0.4.6,<0.5.0)
31
31
  Requires-Dist: composio-core (>=0.7.2,<0.8.0)
32
32
  Requires-Dist: composio-langchain (>=0.7.2,<0.8.0)
33
+ Requires-Dist: datamodel-code-generator[http] (>=0.25.0,<0.26.0)
33
34
  Requires-Dist: datasets (>=2.14.6,<3.0.0) ; extra == "dev" or extra == "all"
34
35
  Requires-Dist: demjson3 (>=3.0.6,<4.0.0)
35
36
  Requires-Dist: docker (>=7.1.0,<8.0.0) ; extra == "external-tools" or extra == "all"
@@ -56,10 +57,10 @@ Requires-Dist: marshmallow-sqlalchemy (>=1.4.1,<2.0.0)
56
57
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
57
58
  Requires-Dist: numpy (>=1.26.2,<2.0.0)
58
59
  Requires-Dist: openai (>=1.60.0,<2.0.0)
59
- Requires-Dist: opentelemetry-api (>=1.30.0,<2.0.0)
60
- Requires-Dist: opentelemetry-exporter-otlp (>=1.30.0,<2.0.0)
61
- Requires-Dist: opentelemetry-instrumentation-requests (>=0.51b0,<0.52)
62
- Requires-Dist: opentelemetry-sdk (>=1.30.0,<2.0.0)
60
+ Requires-Dist: opentelemetry-api (==1.30.0)
61
+ Requires-Dist: opentelemetry-exporter-otlp (==1.30.0)
62
+ Requires-Dist: opentelemetry-instrumentation-requests (==0.51b0)
63
+ Requires-Dist: opentelemetry-sdk (==1.30.0)
63
64
  Requires-Dist: pathvalidate (>=3.2.1,<4.0.0)
64
65
  Requires-Dist: pexpect (>=4.9.0,<5.0.0) ; extra == "dev" or extra == "all"
65
66
  Requires-Dist: pg8000 (>=1.30.3,<2.0.0) ; extra == "postgres" or extra == "all"
@@ -1,9 +1,12 @@
1
- letta/__init__.py,sha256=a7R3j3Qmd9DXH-PvZSRZ7_Mht5Aw5TPiLgc6yuAmJUw,918
1
+ letta/__init__.py,sha256=4ym40mjr7-1tSGCMdgCrprX97F8XePgils4ZWFvEFxM,918
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=je4571lbHoI0Gt3kbW1gRT445R5KodDKFClYjj9w4bU,61470
3
+ letta/agent.py,sha256=VljWPlG9bh22cF0o0s9lGw0Qi5Ua2O2JLSOiFtH1SfE,62823
4
+ letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ letta/agents/base_agent.py,sha256=8IMB7UK4ft-Wi-ZYjX7akqQUhk_cSswRgepqeZyvCMs,1550
6
+ letta/agents/ephemeral_agent.py,sha256=XOQ5rj3cn7i7Imr_aFaL8DbH7oAizrHbmUy8QZuz9yk,2704
7
+ letta/agents/low_latency_agent.py,sha256=ZH7BfIS3j4e5mjWRCArwZrGzZDQKUPcsuxfTCg86h-o,13919
4
8
  letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
5
9
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
6
- letta/chat_only_agent.py,sha256=71Lf-df8y3nsE9IFKpEigaZaWHoWnXnhVChkp1L-83I,4760
7
10
  letta/cli/cli.py,sha256=zJz78-qDUz-depb7VQWkg87RBKiETQU4h9DI6ukQBa8,16477
8
11
  letta/cli/cli_config.py,sha256=MNMhIAAjXiAy2gX_gAtqiY0Ya6VNbzXJWjIcRVEZa-k,8597
9
12
  letta/cli/cli_load.py,sha256=xFw-CuzjChcIptaqQ1XpDROENt0JSjyPeiQ0nmEeO1k,2706
@@ -12,23 +15,23 @@ letta/client/client.py,sha256=7RQjZ-3yn_Hc9QsZoNCFRilyvfTq-Xie2sNbs1Lmbh4,138697
12
15
  letta/client/streaming.py,sha256=lN9vamc07sfQlRbFif327GvURLUPhx-4AC_oUOPvs6w,4543
13
16
  letta/client/utils.py,sha256=VCGV-op5ZSmurd4yw7Vhf93XDQ0BkyBT8qsuV7EqfiU,2859
14
17
  letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
15
- letta/constants.py,sha256=9ZT-kJAZWgB4rqPlYX6Ec_WTk13j-QrNnRu4TFiuq7Y,7453
18
+ letta/constants.py,sha256=Dl_MEUMMSLorS-hVRnbAMzOUAtC8UbW969c2jGy1iLU,7512
16
19
  letta/data_sources/connectors.py,sha256=R2AssXpqS7wN6VI8AfxvqaZs5S1ZACc4E_FewmR9iZI,7022
17
20
  letta/data_sources/connectors_helper.py,sha256=2TQjCt74fCgT5sw1AP8PalDEk06jPBbhrPG4HVr-WLs,3371
18
21
  letta/embeddings.py,sha256=zqlfbN3aCgSOlNd9M2NW9zrwx4WwQzketb8oa5BzzE8,10831
19
22
  letta/errors.py,sha256=6fQXg2unP-2fo3R7db0ayKKWlD2XMusOPNi9TgJplCg,5558
20
23
  letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- letta/functions/ast_parsers.py,sha256=3ejgFDLbGxGMnYRe1d9YCqoo-ehSrmdDQTsxGM-shTM,4161
24
+ letta/functions/ast_parsers.py,sha256=CQI0rUoIXcLKAev_GYrXcldRIGN5ZQtk5u4FLoHe5sE,5728
22
25
  letta/functions/function_sets/base.py,sha256=M3_1Pge2GiyITp_U73T_Sd9O2rFoNlbuT8KgzMjexfs,5999
23
26
  letta/functions/function_sets/extras.py,sha256=R1a97EKepEPDxJKsxQPFdXXWQrkVppOvKbEkRc_79tc,4852
24
27
  letta/functions/function_sets/multi_agent.py,sha256=BcMeod0-lMhnKeaVWJp2T1PzRV0qvCuTWAPMJxAbgHI,4073
25
28
  letta/functions/functions.py,sha256=NyWLh7a-f4mXti5vM1oWDwXzfA58VmVVqL03O9vosKY,5672
26
- letta/functions/helpers.py,sha256=TBji0j7hWT6DvjYY5gfN0CzxCRsVGh8uA6ACp9V3v3M,23185
29
+ letta/functions/helpers.py,sha256=QA953uRT_syzTJs3iju2TbK9tH71m08hZXL5-BmUK2c,26704
27
30
  letta/functions/interface.py,sha256=s_PPp5WDvGH_y9KUpMlORkdC141ITczFk3wsevrrUD8,2866
28
- letta/functions/schema_generator.py,sha256=s10835BHVuGZPGgByjNhDTO9-zv5eOYMPajQh3hFo1c,20678
31
+ letta/functions/schema_generator.py,sha256=dLM8pQ9UP1vP9cnKHgA-UhGllMNvyEIjsO-r47RP9LM,20765
29
32
  letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
30
33
  letta/helpers/composio_helpers.py,sha256=6CWV483vE3N-keQlblexxBiQHxorMAgQuvbok4adGO4,949
31
- letta/helpers/converters.py,sha256=TL3g69RsSByx0IzO434nO3c8zwfPKEIj0R5QAiBsyKM,5415
34
+ letta/helpers/converters.py,sha256=p-_9bzq_DXerQE9abHcQ8xxdQlvu9nwbmMzdefFNCuQ,5541
32
35
  letta/helpers/datetime_helpers.py,sha256=7U5ZJkE0cLki4sG8ukIHZSAoFfQpLWQu2kFekETy6Zg,2633
33
36
  letta/helpers/json_helpers.py,sha256=PWZ5HhSqGXO4e563dM_8M72q7ScirjXQ4Rv1ckohaV8,396
34
37
  letta/helpers/tool_execution_helper.py,sha256=bskCscuz2nqoUboFcYA7sQGeikdEyqiYnNpO4gLQTdc,7469
@@ -37,23 +40,26 @@ letta/humans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
40
  letta/humans/examples/basic.txt,sha256=Lcp8YESTWvOJgO4Yf_yyQmgo5bKakeB1nIVrwEGG6PA,17
38
41
  letta/humans/examples/cs_phd.txt,sha256=9C9ZAV_VuG7GB31ksy3-_NAyk8rjE6YtVOkhp08k1xw,297
39
42
  letta/interface.py,sha256=6CrnvydRZfVY9BQ4fCn85rmQU6D9udcsGww8nTnT95E,12793
43
+ letta/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ letta/interfaces/openai_chat_completions_streaming_interface.py,sha256=SfqVp7V7AbBqv8D_IwyqrcztNiI0nKhjAvqtZQE_jfM,4729
45
+ letta/interfaces/utils.py,sha256=c6jvO0dBYHh8DQnlN-B0qeNC64d3CSunhfqlFA4pJTY,278
40
46
  letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- letta/llm_api/anthropic.py,sha256=hsRuS0-bj74ID4_axQiMwjb8ZmpInStumaHTqvMP_M4,37426
47
+ letta/llm_api/anthropic.py,sha256=4hoOme916XkBOkm08y6U5dQ1-tTiVQG_VIcvJQxu4aQ,37937
42
48
  letta/llm_api/aws_bedrock.py,sha256=J_oCM810-m2T-tgo3iRwSM0BuykBN5AK3SbkyiOaGbc,3835
43
- letta/llm_api/azure_openai.py,sha256=Y1HKPog1XzM_f7ujUK_Gv2zQkoy5pU-1bKiUnvSxSrs,6297
49
+ letta/llm_api/azure_openai.py,sha256=GP50e3WyoU2O_vb_b06GYTA1S157I0G21lF9-qv9nsA,6459
44
50
  letta/llm_api/azure_openai_constants.py,sha256=ZaR2IasJThijG0uhLKJThrixdAxLPD2IojfeaJ-KQMQ,294
45
51
  letta/llm_api/cohere.py,sha256=A5uUoxoRsXsaMDCIIWiVXeyCbiQ7gUfiASb8Ovv2I_o,14852
46
52
  letta/llm_api/deepseek.py,sha256=b1mSW8gnBrpAI8d2GcBpDyLYDnuC-P1UP6xJPalfQS4,12456
47
- letta/llm_api/google_ai.py,sha256=VnoxG6QYcwgFEbH8iJ8MHaMQrW4ROekZy6ZV5ZdHxzI,18000
53
+ letta/llm_api/google_ai.py,sha256=oeGH6dTKfNTQ1Ip4HWkZ5KkVoujdru6XjQPWsirRBSM,18162
48
54
  letta/llm_api/google_constants.py,sha256=ZdABT9l9l-qKcV2QCkVsv9kQbttx6JyIJoOWS8IMS5o,448
49
- letta/llm_api/google_vertex.py,sha256=Cqr73-jZJJvii1M_0QEmasNajOIJ5TDs5GabsCJjI04,14149
55
+ letta/llm_api/google_vertex.py,sha256=-8ERH8YPsQIAi6ZuYNcvny7Jz-Q4IFIbV7xqDspUUD4,14399
50
56
  letta/llm_api/helpers.py,sha256=pXBemF43Ywbwub5dc5V7Slw5K7lNlO0ae8dQBOXgDHs,16773
51
- letta/llm_api/llm_api_tools.py,sha256=AQe-5xiMRRwlx52D1H3LBxt_XHhl7RA3bHM5k9YLcQY,28442
57
+ letta/llm_api/llm_api_tools.py,sha256=OHhwSWRwl4Ubv8_g-zoQZvgWYIkK5PWy6yzLeArIcf8,28427
52
58
  letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
53
- letta/llm_api/openai.py,sha256=wZHuQX018u2lZEKohWlzSYyQn9iYUSEuVn9QAaXIg0A,22038
59
+ letta/llm_api/openai.py,sha256=UnCh2NYYJWpwUai6P2enFop3K_5JS4-VHuoFoBx7yRs,22398
54
60
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
55
61
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- letta/local_llm/chat_completion_proxy.py,sha256=44rvabj2iXPswe5jFt0qWYCasSVXjkT31DivvDoWVMM,13543
62
+ letta/local_llm/chat_completion_proxy.py,sha256=k8_8kIKglMSXnthIdc4TnR3ACJVQsk6MHJY_Y3lM6B0,13845
57
63
  letta/local_llm/constants.py,sha256=MwdXcv2TtH4dh4h6jSdIUor7mfhB7VjJHRweXjpl3Zk,1303
58
64
  letta/local_llm/function_parser.py,sha256=QOCp-ipk88VnKJ17h_-oP8_AR3o5QDt4tEd5QTn2P0o,2622
59
65
  letta/local_llm/grammars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -88,7 +94,7 @@ letta/local_llm/webui/api.py,sha256=kkxncdCFq1vjgvaHOoQ__j7rcDPgC1F64KcEm94Y6Rs,
88
94
  letta/local_llm/webui/legacy_api.py,sha256=k3H3y4qp2Fs-XmP24iSIEyvq6wjWFWBzklY3-wRAJNI,2335
89
95
  letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1rlcc_-Q1JcU,538
90
96
  letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
91
- letta/log.py,sha256=FxkAk2f8Bl-u9dfImSj1DYnjAsmV6PL3tjTSnEiNP48,2218
97
+ letta/log.py,sha256=spiTumfM4Ayk9-pmyKs_jyLvMTyzbQDZay1Vg0ROoZ8,2214
92
98
  letta/main.py,sha256=_agyaYPJq70OL0goNwO34zENL2KupnTgqlg-HVcNaTY,15379
93
99
  letta/memory.py,sha256=Jqh6Uz4mMAC1aAO2sH8zw4TuMWZr1OI-ZgkSUDh2TQI,3353
94
100
  letta/offline_memory_agent.py,sha256=P_rm6GmKAH6lg7-njuv7dK29f7v5-tAQy-rMOwcPfwk,7499
@@ -119,8 +125,8 @@ letta/orm/source.py,sha256=z89VZUHV9K8Ew9JCYoZqUeRb1WEUKmrn0MMFkppaphE,2117
119
125
  letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
120
126
  letta/orm/sqlalchemy_base.py,sha256=8037lD9w5vY7rXhqmXg1mG78UywdHczef7-XGhW7b1U,22511
121
127
  letta/orm/sqlite_functions.py,sha256=JCScKiRlYCKxy9hChQ8wsk4GMKknZE24MunnG3fM1Gw,4255
122
- letta/orm/step.py,sha256=6t_PlVd8pW1Rd6JeECImBG2n9P-yif0Sl9Uzhb-m77w,2982
123
- letta/orm/tool.py,sha256=JEPHlM4ePaLaGtHpHhYdKCteHTRJnOFgQmfR5wL8TpA,2379
128
+ letta/orm/step.py,sha256=Y5hJa7KFJmfIGB21kYBYtooH6esfqUsKK-bh3ZTpHQk,3094
129
+ letta/orm/tool.py,sha256=x58lmVG5IhXTVt82CnoN-ExuObnQCbeSMx_yOhUMmA4,2515
124
130
  letta/orm/tools_agents.py,sha256=r6t-V21w2_mG8n38zuUb5jOi_3hRxsjgezsLA4sg0m4,626
125
131
  letta/orm/user.py,sha256=rK5N5ViDxmesZMqVVHB7FcQNpcSoM-hB42MyI6q3MnI,1004
126
132
  letta/personas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -141,16 +147,17 @@ letta/prompts/system/memgpt_base.txt,sha256=dOHdqibJIth9lHZMxl4hUGxKjT6DWXvvVBb1
141
147
  letta/prompts/system/memgpt_chat.txt,sha256=2tOfLG89vOxBBD7vYOQhIWardJFJ4tO2VUFYcA0NAZo,5420
142
148
  letta/prompts/system/memgpt_chat_compressed.txt,sha256=_gMDjc8tcigLfJ3fOXryz31_DJxSQM812T3J-aw7x0w,1056
143
149
  letta/prompts/system/memgpt_chat_fstring.txt,sha256=N6KSRwu-dcnDBLpCeqCdgM9lI0CnR3uIVPFcrCCa0V0,4720
144
- letta/prompts/system/memgpt_convo_only.txt,sha256=0cmlDNtjZ_YlUVElzM4gzwCh16uwVBN2miKgYIlozKg,1142
150
+ letta/prompts/system/memgpt_convo_only.txt,sha256=-x2NDaV_lz5C-sRK1Fo_U_XGW7jtY_br6VBM2NgtM9Y,868
145
151
  letta/prompts/system/memgpt_doc.txt,sha256=AsT55NOORoH-K-p0fxklrDRZ3qHs4MIKMuR-M4SSU4E,4768
146
152
  letta/prompts/system/memgpt_gpt35_extralong.txt,sha256=FheNhYoIzNz6qnJKhVquZVSMj3HduC48reFaX7Pf7ig,5046
147
153
  letta/prompts/system/memgpt_intuitive_knowledge.txt,sha256=sA7c3urYqREVnSBI81nTGImXAekqC0Fxc7RojFqud1g,2966
154
+ letta/prompts/system/memgpt_memory_only.txt,sha256=p63yl5dRigC9dj1h4g0gRuYmScp1j43efhFnfNxSbUs,2509
148
155
  letta/prompts/system/memgpt_modified_chat.txt,sha256=F_yD4ZcR4aGDE3Z98tI7e609GYekY-fEYomNsCcuV6o,4656
149
156
  letta/prompts/system/memgpt_modified_o1.txt,sha256=objnDgnxpF3-MmU28ZqZ7-TOG8UlHBM_HMyAdSDWK88,5492
150
157
  letta/prompts/system/memgpt_offline_memory.txt,sha256=rWEJeF-6aiinjkJM9hgLUYCmlEcC_HekYB1bjEUYq6M,2460
151
158
  letta/prompts/system/memgpt_offline_memory_chat.txt,sha256=ituh7gDuio7nC2UKFB7GpBq6crxb8bYedQfJ0ADoPgg,3949
152
159
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- letta/schemas/agent.py,sha256=vERl22iOcNfWOqcuFadKGUSy03pHDSgctdn5OTd5qFI,14387
160
+ letta/schemas/agent.py,sha256=6wYcMCDi920UdyUwBm_-xt-cS2Q4G3vfJXYeB9r3BT8,14347
154
161
  letta/schemas/block.py,sha256=FYYmRWjH4d4QHMUx_nmIXjv_qJna_l-Ip_4i51wDBPA,5942
155
162
  letta/schemas/embedding_config.py,sha256=ufboqW9ctSBJdhwzJRbrGtTzOTwSKfT0LY0mowpr6fs,3398
156
163
  letta/schemas/embedding_config_overrides.py,sha256=lkTa4y-EQ2RnaEKtKDM0sEAk7EwNa67REw8DGNNtGQY,84
@@ -179,8 +186,8 @@ letta/schemas/providers.py,sha256=k02mAFMn9F8zW6vjHSIL-OfBlfFharJQM43SrJfdmbs,43
179
186
  letta/schemas/run.py,sha256=SRqPRziINIiPunjOhE_NlbnQYgxTvqmbauni_yfBQRA,2085
180
187
  letta/schemas/sandbox_config.py,sha256=Nz8K5brqe6jpf66KnTJ0-E7ZeFdPoBFGN-XOI35OeaY,5926
181
188
  letta/schemas/source.py,sha256=-BQVolcXA2ziCu2ztR6cbTdGUc8G7vGJy7rvpdf1hpg,2880
182
- letta/schemas/step.py,sha256=wQ-AzhMjH7tLFgZbJfcPkW9a9V81JYWzJCQtTfcb11E,2034
183
- letta/schemas/tool.py,sha256=xRGKnzlCdxTlSBjnsLe0h2CuGJa3d-GN4G-kjmCEDbw,10165
189
+ letta/schemas/step.py,sha256=8rfOW4gbEIB7yp05pqmZn4P3U3XrvXeUd9lPg9yh6x8,2122
190
+ letta/schemas/tool.py,sha256=3K3csZrk0m9e1lg05tNrO5WCTBiCT9lS-WCVL8jM7mk,11201
184
191
  letta/schemas/tool_rule.py,sha256=2YQZba4fXS3u4j8pIk7BDujfq8rnxSVMwJSyaVgApH4,2149
185
192
  letta/schemas/usage.py,sha256=8oYRH-JX0PfjIu2zkT5Uu3UWQ7Unnz_uHiO8hRGI4m0,912
186
193
  letta/schemas/user.py,sha256=V32Tgl6oqB3KznkxUz12y7agkQicjzW7VocSpj78i6Q,1526
@@ -194,7 +201,7 @@ letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
194
201
  letta/server/db.py,sha256=cA1MHpMCTTC1MX7VWppJ-cKq1XW93Vws_vTV0-bKmTE,3642
195
202
  letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
196
203
  letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
- letta/server/rest_api/app.py,sha256=F9XAwZt5nPAE75gHSurXGe4mGmNvmI8DD7RssK8l124,12101
204
+ letta/server/rest_api/app.py,sha256=Di1FRxlgb056Bj9lncsGAc_HX9Cs8OntV9puT6463bs,12157
198
205
  letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
199
206
  letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
200
207
  letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
@@ -205,25 +212,25 @@ letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
205
212
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
213
  letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=yJo_oiv75QsD324lC0uR2B9su9WG1FxabQhAJKS--6s,5530
207
214
  letta/server/rest_api/routers/v1/__init__.py,sha256=Zi2th-okqT_RWAjB8MYGHX8CpHt1OSRyO5V8SJEp6UU,1361
208
- letta/server/rest_api/routers/v1/agents.py,sha256=gkvlga9MOgtYjlH2dOX4mnLpS6ZxKgMTGQcqHiIQrMU,26267
215
+ letta/server/rest_api/routers/v1/agents.py,sha256=I5V06th-lpUZ2fX2wtlYLD8SC2W1AkEIHRR4lr098YM,26658
209
216
  letta/server/rest_api/routers/v1/blocks.py,sha256=0j7JX2BQzk31RyhvPZeEb-zh9ImXsVU4_8y5XMiR_WA,3900
210
217
  letta/server/rest_api/routers/v1/health.py,sha256=MoOjkydhGcJXTiuJrKIB0etVXiRMdTa51S8RQ8-50DQ,399
211
- letta/server/rest_api/routers/v1/identities.py,sha256=CCEF-e91yXOaHevEM0cpPoTHGnWNVljvKD5YC1nFvVk,4981
218
+ letta/server/rest_api/routers/v1/identities.py,sha256=yqehnyLCRMetPHXu1Hfb9DqqiRLnlryR7_VF6t_HUm4,5449
212
219
  letta/server/rest_api/routers/v1/jobs.py,sha256=4oeJfI2odNGubU_g7WSORJhn_usFsbRaD-qm86rve1E,2746
213
220
  letta/server/rest_api/routers/v1/llms.py,sha256=lYp5URXtZk1yu_Pe-p1Wq1uQ0qeb6aWtx78rXSB7N_E,881
214
221
  letta/server/rest_api/routers/v1/organizations.py,sha256=8n-kA9LHtKImdY2xL-v7m6nYAbFWqH1vjBCJhQbv7Is,2077
215
222
  letta/server/rest_api/routers/v1/providers.py,sha256=qyZsNTXgLVsoLZoCVY4qaqiG34zCEVmRUP2Cn6maK_4,2949
216
- letta/server/rest_api/routers/v1/runs.py,sha256=OhyB53q1HiFJCHtRGemfWw5y8cAWwZPxYSzkb1EUC6Y,6074
223
+ letta/server/rest_api/routers/v1/runs.py,sha256=-2_YA2nuxcLqiPjG9CPHeZbyrtlNQZnAsaNohGn5fMg,8278
217
224
  letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=9hqnnMwJ3wCwO-Bezu3Xl8i3TDSIuInw3gSeHaKUXfE,8526
218
225
  letta/server/rest_api/routers/v1/sources.py,sha256=rpQhaRHyzGUK43LX623L8BBLqL85HJ6fUYPMvI4k3kA,8434
219
226
  letta/server/rest_api/routers/v1/steps.py,sha256=IpCQuxpS34-4Qpgdv0FQJO-SffkFkW-OaRjWHquB_1w,3136
220
227
  letta/server/rest_api/routers/v1/tags.py,sha256=coydgvL6-9cuG2Hy5Ea7QY3inhTHlsf69w0tcZenBus,880
221
- letta/server/rest_api/routers/v1/tools.py,sha256=qIpXzrjihQgEnoGeiKxEzaKmzHIVvBO0V_lR1ciBHZs,13147
228
+ letta/server/rest_api/routers/v1/tools.py,sha256=B9zRyc2PeHdPBA6hvHqpTrVWsjgd1uBkyG1J_5E8Rgw,13207
222
229
  letta/server/rest_api/routers/v1/users.py,sha256=G5DBHSkPfBgVHN2Wkm-rVYiLQAudwQczIq2Z3YLdbVo,2277
223
- letta/server/rest_api/routers/v1/voice.py,sha256=rvO6U3Vb9Q2l_kIzfsOgToKjpr06UvnovNN2NSzLcI0,13294
230
+ letta/server/rest_api/routers/v1/voice.py,sha256=0Yk-2c4Ec_viqMLMAn_9kZPAYeUgLQoikpocLfK_qKE,2623
224
231
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
225
- letta/server/rest_api/utils.py,sha256=dpWC_MQijJ66wq4E5KPgXzHmGt6iNsj-Cw0kS4CLOnE,13693
226
- letta/server/server.py,sha256=RnK8LLmczo0rHDl7nFGuYFA3HmqODFqXSH6Wc2g1BZI,57664
232
+ letta/server/rest_api/utils.py,sha256=TlVzgtsg0jmaXzvGubtzOE9WSyvRe6_DFoIBK9EDYt8,13820
233
+ letta/server/server.py,sha256=LrIVbKJeEhSTbbiUQdg0gGvpXveY6ITJINWZ9gqehEA,58118
227
234
  letta/server/startup.sh,sha256=qEi6dQHJRzEzDIgnIODj-RYp-O1XstfFpc6cFLkUzVs,1576
228
235
  letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
229
236
  letta/server/static_files/assets/index-0e31b727.css,sha256=SBbja96uiQVLDhDOroHgM6NSl7tS4lpJRCREgSS_hA8,7672
@@ -237,12 +244,12 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
237
244
  letta/server/ws_api/protocol.py,sha256=5mDgpfNZn_kNwHnpt5Dsuw8gdNH298sgxTGed3etzYg,1836
238
245
  letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
239
246
  letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
- letta/services/agent_manager.py,sha256=fiLhLgYh65LXGuzwsYD38oT3lfBhnyn6yK1uvY3DePg,55536
247
+ letta/services/agent_manager.py,sha256=6faeX7u5CCF5qfwUPNNbQfDNUcIMNcNMV0dGTzM-Aj8,55684
241
248
  letta/services/block_manager.py,sha256=PkbiO59VimLyK6PolWR5O29uHxksCH6pP6K4Vkov3NA,5573
242
- letta/services/helpers/agent_manager_helper.py,sha256=MexqAGoc2e8Bso4_hJhBR6qyiFXtiB2MiMMqL-ur1a0,11302
243
- letta/services/helpers/tool_execution_helper.py,sha256=q8uSiQcX6VH_iNg5VNloZgC2JkH9lIOXBKCXYPx2Yac,6097
249
+ letta/services/helpers/agent_manager_helper.py,sha256=uvQsmk2ZCAvG4AuI9r3Cs3IDe3Ra8X-qP3B3RbBVMtg,11179
250
+ letta/services/helpers/tool_execution_helper.py,sha256=lLoebs1kZKjw62y1PxHbIDkHq_heJN2ZT0gKje-R8oo,6941
244
251
  letta/services/identity_manager.py,sha256=o1XMd5NG2gZ_YWrPOmisfFN0i-2ohoq8n1GM8F49Lf4,7144
245
- letta/services/job_manager.py,sha256=y7P03ijWrOY1HzhphrRdeEPUQz-wHcNvoi-zrefjbuE,13155
252
+ letta/services/job_manager.py,sha256=ejcv_nMljByimiWJjvj7aqUFQktL1kK-vx_cra2L2cs,16317
246
253
  letta/services/message_manager.py,sha256=miGZ24h6NC16wHiTP95ooo-M-o2x1rxRnj67p8vQyOY,10702
247
254
  letta/services/organization_manager.py,sha256=dhQ3cFPXWNYLfMjdahr2HsOAMJ1JtCEWj1G8Nei5MQc,3388
248
255
  letta/services/passage_manager.py,sha256=mwShFO_xRaTi82fvANb_ngO0TmGaZPA9FPu8KuZ6Gd8,8643
@@ -250,18 +257,21 @@ letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1H
250
257
  letta/services/provider_manager.py,sha256=QOKMSZOM6eAWa2-nANWQc1frKBh8N3gqDq0V87fnSuc,3748
251
258
  letta/services/sandbox_config_manager.py,sha256=AlZFtESHfEQf3T6WEpn7-B4nZgmnoO_-FxB5FCxSqpY,13357
252
259
  letta/services/source_manager.py,sha256=SE24AiPPhpvZMGDD047H3_ZDD7OM4zHbTW1JXjPEv7U,7672
253
- letta/services/step_manager.py,sha256=svDP_Mv64iIJKzYDFlDT5fabmWBvyjPPa0FIN--L7u0,5000
254
- letta/services/tool_execution_sandbox.py,sha256=mev4oCHy4B_uoXRccTirDNp_pSX_s5wbUVNz1oKrvBU,22067
255
- letta/services/tool_manager.py,sha256=Q-J8mZKw3zi5Ymxy48DiwpOcv1s6rqdSkRHE6pbnzKk,9568
260
+ letta/services/step_manager.py,sha256=5wAxv3OzoYwW9aDcg26hC3foQqOl5qA0tno3vg_Ai5U,5107
261
+ letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
+ letta/services/summarizer/enums.py,sha256=szzPX2OBRRJEZsBTGYQThrNz02ELFqhuLwvOR7ozi7A,208
263
+ letta/services/summarizer/summarizer.py,sha256=u3WNTPAK0hSyUS8Jb6NDz-BWIZ7bEQj9RBW6AfP4BAc,4746
264
+ letta/services/tool_execution_sandbox.py,sha256=6AB3rFS34PzoyE9dxtUmuaUUWvKrwdE083NuBRa1eC0,22969
265
+ letta/services/tool_manager.py,sha256=HJIDtXmBjoaAfHtuVDBi-j-L4akHelqjkPkeWlLfQo8,9555
256
266
  letta/services/user_manager.py,sha256=ScHbdJK9kNF8QXjsd3ZWGEL87n_Uyp3YwfKetOJmpHs,4304
257
- letta/settings.py,sha256=KAWy4bCE9OWwyNmMKabamFtf2iMWxFNT_fyxDdRuK1U,6635
267
+ letta/settings.py,sha256=bDJUHGzcGs04LIvxnISwg27M_kSCRXntcj2cNcgXftc,6685
258
268
  letta/streaming_interface.py,sha256=1vuAckIxo1p1UsXtDzE8LTUve5RoTZRdXUe-WBIYDWU,15818
259
269
  letta/streaming_utils.py,sha256=jLqFTVhUL76FeOuYk8TaRQHmPTf3HSRc2EoJwxJNK6U,11946
260
270
  letta/system.py,sha256=dnOrS2FlRMwijQnOvfrky0Lg8wEw-FUq2zzfAJOUSKA,8477
261
- letta/tracing.py,sha256=0uCH8j2ipTpS8Vt7bFl74sG5ckgBHy9fu-cyG9SBSsc,7464
271
+ letta/tracing.py,sha256=h_-c2lIKHmA7yCLOvgaHijMabmRC__FAl2rZtVKufUM,8017
262
272
  letta/utils.py,sha256=AdHrQ2OQ3V4XhJ1LtYwbLUO71j2IJY37cIUxXPgaaRY,32125
263
- letta_nightly-0.6.34.dev20250303104329.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
264
- letta_nightly-0.6.34.dev20250303104329.dist-info/METADATA,sha256=BsC67f8j5tRHGL4RSyq5zp8SnbGLM5QOpnfy_48QaXo,22589
265
- letta_nightly-0.6.34.dev20250303104329.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
266
- letta_nightly-0.6.34.dev20250303104329.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
267
- letta_nightly-0.6.34.dev20250303104329.dist-info/RECORD,,
273
+ letta_nightly-0.6.35.dev20250304104154.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
274
+ letta_nightly-0.6.35.dev20250304104154.dist-info/METADATA,sha256=mL10QPcVMpdtQMGKTgInGcSxk4BKrgCbLpP-3_XgSsw,22627
275
+ letta_nightly-0.6.35.dev20250304104154.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
276
+ letta_nightly-0.6.35.dev20250304104154.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
277
+ letta_nightly-0.6.35.dev20250304104154.dist-info/RECORD,,