letta-nightly 0.11.3.dev20250819104229__tar.gz → 0.11.4.dev20250820213507__tar.gz
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.
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/PKG-INFO +2 -2
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/__init__.py +1 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/helpers.py +4 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/letta_agent.py +142 -5
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/constants.py +10 -7
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/data_sources/connectors.py +70 -53
- letta_nightly-0.11.4.dev20250820213507/letta/embeddings.py +53 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/errors.py +28 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/function_sets/base.py +4 -4
- letta_nightly-0.11.4.dev20250820213507/letta/functions/functions.py +412 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/mcp_client/types.py +11 -0
- letta_nightly-0.11.4.dev20250820213507/letta/functions/schema_validator.py +187 -0
- letta_nightly-0.11.4.dev20250820213507/letta/functions/typescript_parser.py +196 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/datetime_helpers.py +8 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/tool_execution_helper.py +25 -2
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/anthropic_client.py +23 -18
- letta_nightly-0.11.4.dev20250820213507/letta/llm_api/azure_client.py +73 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/bedrock_client.py +8 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/google_vertex_client.py +14 -5
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/llm_api_tools.py +2 -217
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/llm_client.py +15 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/llm_client_base.py +32 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/openai.py +1 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/openai_client.py +18 -28
- letta_nightly-0.11.4.dev20250820213507/letta/llm_api/together_client.py +55 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/provider.py +1 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/step_metrics.py +40 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/db_pool_monitoring.py +1 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/agent.py +3 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/agent_file.py +2 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/block.py +11 -5
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/embedding_config.py +4 -5
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/enums.py +1 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/job.py +2 -3
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/llm_config.py +79 -7
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/mcp.py +0 -24
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/message.py +0 -108
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/openai/chat_completion_request.py +1 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/__init__.py +0 -2
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/anthropic.py +106 -8
- letta_nightly-0.11.4.dev20250820213507/letta/schemas/providers/azure.py +174 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/base.py +10 -3
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/bedrock.py +28 -16
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/letta.py +3 -3
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/ollama.py +2 -12
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/openai.py +4 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/together.py +14 -2
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/sandbox_config.py +2 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/tool.py +46 -22
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/agents.py +179 -38
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/folders.py +13 -8
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/providers.py +10 -3
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/sources.py +14 -8
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/steps.py +17 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/tools.py +96 -5
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/streaming_response.py +91 -45
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/server.py +27 -38
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/agent_manager.py +92 -20
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/agent_serialization_manager.py +11 -7
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/context_window_calculator/context_window_calculator.py +40 -2
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/helpers/agent_manager_helper.py +73 -12
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp_manager.py +109 -15
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/passage_manager.py +28 -109
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/provider_manager.py +24 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/step_manager.py +68 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/summarizer/summarizer.py +1 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/core_tool_executor.py +1 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/sandbox_tool_executor.py +26 -9
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_manager.py +82 -5
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_sandbox/base.py +3 -11
- letta_nightly-0.11.4.dev20250820213507/letta/services/tool_sandbox/modal_constants.py +17 -0
- letta_nightly-0.11.4.dev20250820213507/letta/services/tool_sandbox/modal_deployment_manager.py +242 -0
- letta_nightly-0.11.4.dev20250820213507/letta/services/tool_sandbox/modal_sandbox.py +420 -0
- letta_nightly-0.11.4.dev20250820213507/letta/services/tool_sandbox/modal_sandbox_v2.py +429 -0
- letta_nightly-0.11.4.dev20250820213507/letta/services/tool_sandbox/modal_version_manager.py +273 -0
- letta_nightly-0.11.4.dev20250820213507/letta/services/tool_sandbox/safe_pickle.py +193 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/settings.py +5 -3
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/templates/sandbox_code_file.py.j2 +2 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/templates/sandbox_code_file_async.py.j2 +2 -4
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/utils.py +1 -1
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/pyproject.toml +2 -2
- letta_nightly-0.11.3.dev20250819104229/letta/embeddings.py +0 -290
- letta_nightly-0.11.3.dev20250819104229/letta/functions/functions.py +0 -157
- letta_nightly-0.11.3.dev20250819104229/letta/llm_api/anthropic.py +0 -1206
- letta_nightly-0.11.3.dev20250819104229/letta/llm_api/aws_bedrock.py +0 -104
- letta_nightly-0.11.3.dev20250819104229/letta/llm_api/azure_openai.py +0 -118
- letta_nightly-0.11.3.dev20250819104229/letta/llm_api/azure_openai_constants.py +0 -11
- letta_nightly-0.11.3.dev20250819104229/letta/llm_api/cohere.py +0 -391
- letta_nightly-0.11.3.dev20250819104229/letta/schemas/providers/azure.py +0 -80
- letta_nightly-0.11.3.dev20250819104229/letta/schemas/providers/cohere.py +0 -18
- letta_nightly-0.11.3.dev20250819104229/letta/services/tool_sandbox/modal_sandbox.py +0 -205
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/LICENSE +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/README.md +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/base_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/ephemeral_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/ephemeral_summary_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/exceptions.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/letta_agent_batch.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/voice_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/agents/voice_sleeptime_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/cli/cli.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/cli/cli_load.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/client/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/client/streaming.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/client/utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/config.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/data_sources/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/data_sources/connectors_helper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/data_sources/redis_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/ast_parsers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/async_composio_toolset.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/composio_helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/function_sets/builtin.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/function_sets/extras.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/function_sets/files.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/function_sets/multi_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/function_sets/voice.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/mcp_client/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/mcp_client/base_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/mcp_client/exceptions.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/mcp_client/sse_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/mcp_client/stdio_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/prompts.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/schema_generator.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/functions/types.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/groups/dynamic_multi_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/groups/helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/groups/round_robin_multi_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/groups/sleeptime_multi_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/groups/sleeptime_multi_agent_v2.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/groups/supervisor_multi_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/composio_helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/converters.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/decorators.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/json_helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/message_helper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/pinecone_utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/reasoning_helper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/singleton.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/helpers/tool_rule_solver.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/humans/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/humans/examples/basic.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/humans/examples/cs_phd.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/interfaces/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/interfaces/anthropic_streaming_interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/interfaces/openai_streaming_interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/interfaces/utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/jobs/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/jobs/helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/jobs/llm_batch_job_polling.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/jobs/scheduler.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/jobs/types.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/deepseek.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/google_ai_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/google_constants.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/helpers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/mistral.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/sample_response_jsons/aws_bedrock.json +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/sample_response_jsons/lmstudio_embedding_list.json +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/llm_api/sample_response_jsons/lmstudio_model_list.json +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/README.md +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/chat_completion_proxy.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/constants.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/function_parser.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/grammars/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/grammars/json.gbnf +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/json_parser.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/koboldcpp/api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/koboldcpp/settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llamacpp/api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llamacpp/settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/lmstudio/api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/lmstudio/settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/ollama/api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/ollama/settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/settings/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/settings/settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/settings/simple.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/vllm/api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/webui/api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/webui/legacy_api.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/webui/legacy_settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/local_llm/webui/settings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/log.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/main.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/memory.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/openai_backcompat/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/openai_backcompat/openai_object.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/agents_tags.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/archive.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/archives_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/base.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/block.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/block_history.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/blocks_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/custom_columns.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/errors.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/file.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/files_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/group.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/groups_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/groups_blocks.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/identities_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/identities_blocks.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/identity.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/job.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/job_messages.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/llm_batch_items.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/llm_batch_job.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/mcp_oauth.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/mcp_server.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/message.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/mixins.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/organization.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/passage.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/prompt.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/provider_trace.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/sandbox_config.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/source.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/sources_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/sqlalchemy_base.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/sqlite_functions.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/step.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/tool.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/tools_agents.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/orm/user.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/context.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/events.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/metric_registry.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/metrics.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/resource.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/sqlalchemy_instrumentation.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/sqlalchemy_instrumentation_integration.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/otel/tracing.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/anna_pa.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/google_search_persona.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/memgpt_doc.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/memgpt_starter.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/o1_persona.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/sam.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/sam_pov.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/sqldb/test.db +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/personas/examples/voice_memory_persona.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/plugins/README.md +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/plugins/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/plugins/defaults.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/plugins/plugins.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/gpt_summarize.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/gpt_system.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_base.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_chat.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_convo_only.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_doc.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_generate_tool.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_memory_only.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/memgpt_v2_chat.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/react.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/sleeptime.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/sleeptime_v2.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/summary_system_prompt.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/voice_chat.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/voice_sleeptime.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/prompts/system/workflow.txt +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/pytest.ini +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/archive.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/embedding_config_overrides.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/environment_variables.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/file.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/folder.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/group.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/health.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/identity.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_base.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_message.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_message_content.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_ping.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_request.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_response.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/letta_stop_reason.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/llm_batch_job.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/llm_config_overrides.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/memory.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/npm_requirement.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/openai/chat_completion_response.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/openai/chat_completions.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/openai/embedding_response.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/openai/openai.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/organization.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/passage.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/pip_requirement.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/prompt.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/provider_trace.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/cerebras.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/deepseek.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/google_gemini.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/google_vertex.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/groq.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/lmstudio.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/mistral.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/vllm.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers/xai.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/providers.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/response_format.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/run.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/source.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/source_metadata.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/step.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/step_metrics.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/tool_execution_result.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/tool_rule.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/usage.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/schemas/user.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_agent.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_base.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_block.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_message.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_tag.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/marshmallow_tool.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/constants.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/db.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/generate_openapi_schema.sh +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/app.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/auth/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/auth/index.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/auth_token.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/chat_completions_interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/json_parser.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/middleware/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/middleware/check_password.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/middleware/profiler_context.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/blocks.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/groups.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/health.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/identities.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/jobs.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/llms.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/messages.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/organizations.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/runs.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/tags.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/telemetry.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/users.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/routers/v1/voice.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/static_files.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/rest_api/utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/startup.sh +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/static_files/assets/index-048c9598.js +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/static_files/assets/index-0e31b727.css +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/static_files/favicon.ico +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/static_files/index.html +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/ws_api/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/ws_api/example_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/ws_api/interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/ws_api/protocol.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/server/ws_api/server.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/agent_file_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/archive_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/block_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/context_window_calculator/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/context_window_calculator/token_counter.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/chunker/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/chunker/line_chunker.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/chunker/llama_index_chunker.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/embedder/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/embedder/base_embedder.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/embedder/openai_embedder.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/embedder/pinecone_embedder.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/file_processor.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/file_types.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/parser/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/parser/base_parser.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/parser/markitdown_parser.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/parser/mistral_parser.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/file_processor/types.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/files_agents_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/group_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/helpers/tool_execution_helper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/helpers/tool_parser_helper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/identity_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/job_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/llm_batch_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/base_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/oauth_utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/sse_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/stdio_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/streamable_http_client.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/mcp/types.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/message_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/organization_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/per_agent_lock_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/sandbox_config_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/source_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/summarizer/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/summarizer/enums.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/telemetry_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/builtin_tool_executor.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/composio_tool_executor.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/files_tool_executor.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/mcp_tool_executor.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/multi_agent_tool_executor.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/tool_execution_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_executor/tool_executor_base.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_sandbox/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/tool_sandbox/local_sandbox.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/services/user_manager.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/streaming_interface.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/streaming_utils.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/system.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/templates/__init__.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/templates/summary_request_text.j2 +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/templates/template_helper.py +0 -0
- {letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: letta-nightly
|
3
|
-
Version: 0.11.
|
3
|
+
Version: 0.11.4.dev20250820213507
|
4
4
|
Summary: Create LLM agents with long-term memory and custom tools
|
5
5
|
License: Apache License
|
6
6
|
Author: Letta Team
|
@@ -68,7 +68,7 @@ Requires-Dist: mistralai (>=1.8.1,<2.0.0)
|
|
68
68
|
Requires-Dist: modal (>=1.1.0,<2.0.0) ; extra == "cloud-tool-sandbox"
|
69
69
|
Requires-Dist: nltk (>=3.8.1,<4.0.0)
|
70
70
|
Requires-Dist: numpy (>=2.1.0,<3.0.0)
|
71
|
-
Requires-Dist: openai (>=1.
|
71
|
+
Requires-Dist: openai (>=1.99.9,<2.0.0)
|
72
72
|
Requires-Dist: opentelemetry-api (==1.30.0)
|
73
73
|
Requires-Dist: opentelemetry-exporter-otlp (==1.30.0)
|
74
74
|
Requires-Dist: opentelemetry-instrumentation-requests (==0.51b0)
|
@@ -4,6 +4,7 @@ import xml.etree.ElementTree as ET
|
|
4
4
|
from typing import List, Optional, Tuple
|
5
5
|
|
6
6
|
from letta.helpers import ToolRulesSolver
|
7
|
+
from letta.log import get_logger
|
7
8
|
from letta.schemas.agent import AgentState
|
8
9
|
from letta.schemas.letta_message import MessageType
|
9
10
|
from letta.schemas.letta_response import LettaResponse
|
@@ -15,6 +16,8 @@ from letta.schemas.user import User
|
|
15
16
|
from letta.server.rest_api.utils import create_input_messages
|
16
17
|
from letta.services.message_manager import MessageManager
|
17
18
|
|
19
|
+
logger = get_logger(__name__)
|
20
|
+
|
18
21
|
|
19
22
|
def _create_letta_response(
|
20
23
|
new_in_context_messages: list[Message],
|
@@ -222,6 +225,7 @@ def _safe_load_tool_call_str(tool_call_args_str: str) -> dict:
|
|
222
225
|
# Load it again - this is due to sometimes Anthropic returning weird json @caren
|
223
226
|
tool_args = json.loads(tool_args)
|
224
227
|
except json.JSONDecodeError:
|
228
|
+
logger.error("Failed to JSON decode tool call argument string: %s", tool_call_args_str)
|
225
229
|
tool_args = {}
|
226
230
|
|
227
231
|
return tool_args
|
@@ -44,6 +44,7 @@ from letta.schemas.message import Message, MessageCreate
|
|
44
44
|
from letta.schemas.openai.chat_completion_response import ToolCall, UsageStatistics
|
45
45
|
from letta.schemas.provider_trace import ProviderTraceCreate
|
46
46
|
from letta.schemas.step import StepProgression
|
47
|
+
from letta.schemas.step_metrics import StepMetrics
|
47
48
|
from letta.schemas.tool_execution_result import ToolExecutionResult
|
48
49
|
from letta.schemas.usage import LettaUsageStatistics
|
49
50
|
from letta.schemas.user import User
|
@@ -242,6 +243,7 @@ class LettaAgent(BaseAgent):
|
|
242
243
|
|
243
244
|
step_progression = StepProgression.START
|
244
245
|
should_continue = False
|
246
|
+
step_metrics = StepMetrics(id=step_id) # Initialize metrics tracking
|
245
247
|
|
246
248
|
# Create step early with PENDING status
|
247
249
|
logged_step = await self.step_manager.log_step_async(
|
@@ -271,6 +273,7 @@ class LettaAgent(BaseAgent):
|
|
271
273
|
llm_client,
|
272
274
|
tool_rules_solver,
|
273
275
|
agent_step_span,
|
276
|
+
step_metrics,
|
274
277
|
)
|
275
278
|
)
|
276
279
|
in_context_messages = current_in_context_messages + new_in_context_messages
|
@@ -320,6 +323,7 @@ class LettaAgent(BaseAgent):
|
|
320
323
|
initial_messages=initial_messages,
|
321
324
|
agent_step_span=agent_step_span,
|
322
325
|
is_final_step=(i == max_steps - 1),
|
326
|
+
step_metrics=step_metrics,
|
323
327
|
)
|
324
328
|
step_progression = StepProgression.STEP_LOGGED
|
325
329
|
|
@@ -365,6 +369,17 @@ class LettaAgent(BaseAgent):
|
|
365
369
|
|
366
370
|
MetricRegistry().step_execution_time_ms_histogram.record(get_utc_timestamp_ns() - step_start, get_ctx_attributes())
|
367
371
|
step_progression = StepProgression.FINISHED
|
372
|
+
|
373
|
+
# Record step metrics for successful completion
|
374
|
+
if logged_step and step_metrics:
|
375
|
+
# Set the step_ns that was already calculated
|
376
|
+
step_metrics.step_ns = step_ns
|
377
|
+
await self._record_step_metrics(
|
378
|
+
step_id=step_id,
|
379
|
+
agent_state=agent_state,
|
380
|
+
step_metrics=step_metrics,
|
381
|
+
)
|
382
|
+
|
368
383
|
except Exception as e:
|
369
384
|
# Handle any unexpected errors during step processing
|
370
385
|
self.logger.error(f"Error during step processing: {e}")
|
@@ -416,7 +431,7 @@ class LettaAgent(BaseAgent):
|
|
416
431
|
|
417
432
|
if step_progression <= StepProgression.RESPONSE_RECEIVED:
|
418
433
|
# TODO (cliandy): persist response if we get it back
|
419
|
-
if settings.track_errored_messages:
|
434
|
+
if settings.track_errored_messages and initial_messages:
|
420
435
|
for message in initial_messages:
|
421
436
|
message.is_err = True
|
422
437
|
message.step_id = effective_step_id
|
@@ -433,6 +448,17 @@ class LettaAgent(BaseAgent):
|
|
433
448
|
if settings.track_stop_reason:
|
434
449
|
await self._log_request(request_start_timestamp_ns, request_span, job_update_metadata, is_error=True)
|
435
450
|
|
451
|
+
# Record partial step metrics on failure (capture whatever timing data we have)
|
452
|
+
if logged_step and step_metrics and step_progression < StepProgression.FINISHED:
|
453
|
+
# Calculate total step time up to the failure point
|
454
|
+
step_metrics.step_ns = get_utc_timestamp_ns() - step_start
|
455
|
+
await self._record_step_metrics(
|
456
|
+
step_id=step_id,
|
457
|
+
agent_state=agent_state,
|
458
|
+
step_metrics=step_metrics,
|
459
|
+
job_id=locals().get("run_id", self.current_run_id),
|
460
|
+
)
|
461
|
+
|
436
462
|
except Exception as e:
|
437
463
|
self.logger.error("Failed to update step: %s", e)
|
438
464
|
|
@@ -513,6 +539,7 @@ class LettaAgent(BaseAgent):
|
|
513
539
|
|
514
540
|
step_progression = StepProgression.START
|
515
541
|
should_continue = False
|
542
|
+
step_metrics = StepMetrics(id=step_id) # Initialize metrics tracking
|
516
543
|
|
517
544
|
# Create step early with PENDING status
|
518
545
|
logged_step = await self.step_manager.log_step_async(
|
@@ -536,7 +563,13 @@ class LettaAgent(BaseAgent):
|
|
536
563
|
try:
|
537
564
|
request_data, response_data, current_in_context_messages, new_in_context_messages, valid_tool_names = (
|
538
565
|
await self._build_and_request_from_llm(
|
539
|
-
current_in_context_messages,
|
566
|
+
current_in_context_messages,
|
567
|
+
new_in_context_messages,
|
568
|
+
agent_state,
|
569
|
+
llm_client,
|
570
|
+
tool_rules_solver,
|
571
|
+
agent_step_span,
|
572
|
+
step_metrics,
|
540
573
|
)
|
541
574
|
)
|
542
575
|
in_context_messages = current_in_context_messages + new_in_context_messages
|
@@ -587,6 +620,7 @@ class LettaAgent(BaseAgent):
|
|
587
620
|
agent_step_span=agent_step_span,
|
588
621
|
is_final_step=(i == max_steps - 1),
|
589
622
|
run_id=run_id,
|
623
|
+
step_metrics=step_metrics,
|
590
624
|
)
|
591
625
|
step_progression = StepProgression.STEP_LOGGED
|
592
626
|
|
@@ -622,6 +656,17 @@ class LettaAgent(BaseAgent):
|
|
622
656
|
MetricRegistry().step_execution_time_ms_histogram.record(get_utc_timestamp_ns() - step_start, get_ctx_attributes())
|
623
657
|
step_progression = StepProgression.FINISHED
|
624
658
|
|
659
|
+
# Record step metrics for successful completion
|
660
|
+
if logged_step and step_metrics:
|
661
|
+
# Set the step_ns that was already calculated
|
662
|
+
step_metrics.step_ns = step_ns
|
663
|
+
await self._record_step_metrics(
|
664
|
+
step_id=step_id,
|
665
|
+
agent_state=agent_state,
|
666
|
+
step_metrics=step_metrics,
|
667
|
+
job_id=run_id if run_id else self.current_run_id,
|
668
|
+
)
|
669
|
+
|
625
670
|
except Exception as e:
|
626
671
|
# Handle any unexpected errors during step processing
|
627
672
|
self.logger.error(f"Error during step processing: {e}")
|
@@ -669,7 +714,7 @@ class LettaAgent(BaseAgent):
|
|
669
714
|
|
670
715
|
if step_progression <= StepProgression.RESPONSE_RECEIVED:
|
671
716
|
# TODO (cliandy): persist response if we get it back
|
672
|
-
if settings.track_errored_messages:
|
717
|
+
if settings.track_errored_messages and initial_messages:
|
673
718
|
for message in initial_messages:
|
674
719
|
message.is_err = True
|
675
720
|
message.step_id = effective_step_id
|
@@ -686,6 +731,17 @@ class LettaAgent(BaseAgent):
|
|
686
731
|
if settings.track_stop_reason:
|
687
732
|
await self._log_request(request_start_timestamp_ns, request_span, job_update_metadata, is_error=True)
|
688
733
|
|
734
|
+
# Record partial step metrics on failure (capture whatever timing data we have)
|
735
|
+
if logged_step and step_metrics and step_progression < StepProgression.FINISHED:
|
736
|
+
# Calculate total step time up to the failure point
|
737
|
+
step_metrics.step_ns = get_utc_timestamp_ns() - step_start
|
738
|
+
await self._record_step_metrics(
|
739
|
+
step_id=step_id,
|
740
|
+
agent_state=agent_state,
|
741
|
+
step_metrics=step_metrics,
|
742
|
+
job_id=locals().get("run_id", self.current_run_id),
|
743
|
+
)
|
744
|
+
|
689
745
|
except Exception as e:
|
690
746
|
self.logger.error("Failed to update step: %s", e)
|
691
747
|
|
@@ -774,6 +830,7 @@ class LettaAgent(BaseAgent):
|
|
774
830
|
|
775
831
|
step_progression = StepProgression.START
|
776
832
|
should_continue = False
|
833
|
+
step_metrics = StepMetrics(id=step_id) # Initialize metrics tracking
|
777
834
|
|
778
835
|
# Create step early with PENDING status
|
779
836
|
logged_step = await self.step_manager.log_step_async(
|
@@ -875,7 +932,10 @@ class LettaAgent(BaseAgent):
|
|
875
932
|
)
|
876
933
|
|
877
934
|
# log LLM request time
|
878
|
-
|
935
|
+
llm_request_ns = stream_end_time_ns - provider_request_start_timestamp_ns
|
936
|
+
step_metrics.llm_request_ns = llm_request_ns
|
937
|
+
|
938
|
+
llm_request_ms = ns_to_ms(llm_request_ns)
|
879
939
|
agent_step_span.add_event(name="llm_request_ms", attributes={"duration_ms": llm_request_ms})
|
880
940
|
MetricRegistry().llm_execution_time_ms_histogram.record(
|
881
941
|
llm_request_ms,
|
@@ -908,6 +968,7 @@ class LettaAgent(BaseAgent):
|
|
908
968
|
initial_messages=initial_messages,
|
909
969
|
agent_step_span=agent_step_span,
|
910
970
|
is_final_step=(i == max_steps - 1),
|
971
|
+
step_metrics=step_metrics,
|
911
972
|
)
|
912
973
|
step_progression = StepProgression.STEP_LOGGED
|
913
974
|
|
@@ -979,6 +1040,25 @@ class LettaAgent(BaseAgent):
|
|
979
1040
|
MetricRegistry().step_execution_time_ms_histogram.record(get_utc_timestamp_ns() - step_start, get_ctx_attributes())
|
980
1041
|
step_progression = StepProgression.FINISHED
|
981
1042
|
|
1043
|
+
# Record step metrics for successful completion
|
1044
|
+
if logged_step and step_metrics:
|
1045
|
+
try:
|
1046
|
+
# Set the step_ns that was already calculated
|
1047
|
+
step_metrics.step_ns = step_ns
|
1048
|
+
|
1049
|
+
# Get context attributes for project and template IDs
|
1050
|
+
ctx_attrs = get_ctx_attributes()
|
1051
|
+
|
1052
|
+
await self._record_step_metrics(
|
1053
|
+
step_id=step_id,
|
1054
|
+
agent_state=agent_state,
|
1055
|
+
step_metrics=step_metrics,
|
1056
|
+
ctx_attrs=ctx_attrs,
|
1057
|
+
job_id=self.current_run_id,
|
1058
|
+
)
|
1059
|
+
except Exception as metrics_error:
|
1060
|
+
self.logger.warning(f"Failed to record step metrics: {metrics_error}")
|
1061
|
+
|
982
1062
|
except Exception as e:
|
983
1063
|
# Handle any unexpected errors during step processing
|
984
1064
|
self.logger.error(f"Error during step processing: {e}")
|
@@ -1029,7 +1109,7 @@ class LettaAgent(BaseAgent):
|
|
1029
1109
|
)
|
1030
1110
|
|
1031
1111
|
if step_progression <= StepProgression.STREAM_RECEIVED:
|
1032
|
-
if first_chunk and settings.track_errored_messages:
|
1112
|
+
if first_chunk and settings.track_errored_messages and initial_messages:
|
1033
1113
|
for message in initial_messages:
|
1034
1114
|
message.is_err = True
|
1035
1115
|
message.step_id = effective_step_id
|
@@ -1047,6 +1127,25 @@ class LettaAgent(BaseAgent):
|
|
1047
1127
|
if settings.track_stop_reason:
|
1048
1128
|
await self._log_request(request_start_timestamp_ns, request_span, job_update_metadata, is_error=True)
|
1049
1129
|
|
1130
|
+
# Record partial step metrics on failure (capture whatever timing data we have)
|
1131
|
+
if logged_step and step_metrics and step_progression < StepProgression.FINISHED:
|
1132
|
+
try:
|
1133
|
+
# Calculate total step time up to the failure point
|
1134
|
+
step_metrics.step_ns = get_utc_timestamp_ns() - step_start
|
1135
|
+
|
1136
|
+
# Get context attributes for project and template IDs
|
1137
|
+
ctx_attrs = get_ctx_attributes()
|
1138
|
+
|
1139
|
+
await self._record_step_metrics(
|
1140
|
+
step_id=step_id,
|
1141
|
+
agent_state=agent_state,
|
1142
|
+
step_metrics=step_metrics,
|
1143
|
+
ctx_attrs=ctx_attrs,
|
1144
|
+
job_id=locals().get("run_id", self.current_run_id),
|
1145
|
+
)
|
1146
|
+
except Exception as metrics_error:
|
1147
|
+
self.logger.warning(f"Failed to record step metrics: {metrics_error}")
|
1148
|
+
|
1050
1149
|
except Exception as e:
|
1051
1150
|
self.logger.error("Failed to update step: %s", e)
|
1052
1151
|
|
@@ -1087,6 +1186,32 @@ class LettaAgent(BaseAgent):
|
|
1087
1186
|
if request_span:
|
1088
1187
|
request_span.end()
|
1089
1188
|
|
1189
|
+
async def _record_step_metrics(
|
1190
|
+
self,
|
1191
|
+
*,
|
1192
|
+
step_id: str,
|
1193
|
+
agent_state: AgentState,
|
1194
|
+
step_metrics: StepMetrics,
|
1195
|
+
ctx_attrs: dict | None = None,
|
1196
|
+
job_id: str | None = None,
|
1197
|
+
) -> None:
|
1198
|
+
try:
|
1199
|
+
attrs = ctx_attrs or get_ctx_attributes()
|
1200
|
+
await self.step_manager.record_step_metrics_async(
|
1201
|
+
actor=self.actor,
|
1202
|
+
step_id=step_id,
|
1203
|
+
llm_request_ns=step_metrics.llm_request_ns,
|
1204
|
+
tool_execution_ns=step_metrics.tool_execution_ns,
|
1205
|
+
step_ns=step_metrics.step_ns,
|
1206
|
+
agent_id=agent_state.id,
|
1207
|
+
job_id=job_id or self.current_run_id,
|
1208
|
+
project_id=attrs.get("project.id") or agent_state.project_id,
|
1209
|
+
template_id=attrs.get("template.id"),
|
1210
|
+
base_template_id=attrs.get("base_template.id"),
|
1211
|
+
)
|
1212
|
+
except Exception as metrics_error:
|
1213
|
+
self.logger.warning(f"Failed to record step metrics: {metrics_error}")
|
1214
|
+
|
1090
1215
|
# noinspection PyInconsistentReturns
|
1091
1216
|
async def _build_and_request_from_llm(
|
1092
1217
|
self,
|
@@ -1096,6 +1221,7 @@ class LettaAgent(BaseAgent):
|
|
1096
1221
|
llm_client: LLMClientBase,
|
1097
1222
|
tool_rules_solver: ToolRulesSolver,
|
1098
1223
|
agent_step_span: "Span",
|
1224
|
+
step_metrics: StepMetrics,
|
1099
1225
|
) -> tuple[dict, dict, list[Message], list[Message], list[str]] | None:
|
1100
1226
|
for attempt in range(self.max_summarization_retries + 1):
|
1101
1227
|
try:
|
@@ -1112,6 +1238,10 @@ class LettaAgent(BaseAgent):
|
|
1112
1238
|
async with AsyncTimer() as timer:
|
1113
1239
|
# Attempt LLM request
|
1114
1240
|
response = await llm_client.request_async(request_data, agent_state.llm_config)
|
1241
|
+
|
1242
|
+
# Track LLM request time
|
1243
|
+
step_metrics.llm_request_ns = int(timer.elapsed_ns)
|
1244
|
+
|
1115
1245
|
MetricRegistry().llm_execution_time_ms_histogram.record(
|
1116
1246
|
timer.elapsed_ms,
|
1117
1247
|
dict(get_ctx_attributes(), **{"model.name": agent_state.llm_config.model}),
|
@@ -1352,6 +1482,7 @@ class LettaAgent(BaseAgent):
|
|
1352
1482
|
agent_step_span: Optional["Span"] = None,
|
1353
1483
|
is_final_step: bool | None = None,
|
1354
1484
|
run_id: str | None = None,
|
1485
|
+
step_metrics: StepMetrics = None,
|
1355
1486
|
) -> tuple[list[Message], bool, LettaStopReason | None]:
|
1356
1487
|
"""
|
1357
1488
|
Handle the final AI response once streaming completes, execute / validate the
|
@@ -1378,6 +1509,8 @@ class LettaAgent(BaseAgent):
|
|
1378
1509
|
if tool_rule_violated:
|
1379
1510
|
tool_execution_result = _build_rule_violation_result(tool_call_name, valid_tool_names, tool_rules_solver)
|
1380
1511
|
else:
|
1512
|
+
# Track tool execution time
|
1513
|
+
tool_start_time = get_utc_timestamp_ns()
|
1381
1514
|
tool_execution_result = await self._execute_tool(
|
1382
1515
|
tool_name=tool_call_name,
|
1383
1516
|
tool_args=tool_args,
|
@@ -1385,6 +1518,10 @@ class LettaAgent(BaseAgent):
|
|
1385
1518
|
agent_step_span=agent_step_span,
|
1386
1519
|
step_id=step_id,
|
1387
1520
|
)
|
1521
|
+
tool_end_time = get_utc_timestamp_ns()
|
1522
|
+
|
1523
|
+
# Store tool execution time in metrics
|
1524
|
+
step_metrics.tool_execution_ns = tool_end_time - tool_start_time
|
1388
1525
|
|
1389
1526
|
log_telemetry(
|
1390
1527
|
self.logger, "_handle_ai_response execute tool finish", tool_execution_result=tool_execution_result, tool_call_id=tool_call_id
|
{letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/constants.py
RENAMED
@@ -36,6 +36,7 @@ LETTA_TOOL_MODULE_NAMES = [
|
|
36
36
|
DEFAULT_ORG_ID = "org-00000000-0000-4000-8000-000000000000"
|
37
37
|
DEFAULT_ORG_NAME = "default_org"
|
38
38
|
|
39
|
+
AGENT_ID_PATTERN = re.compile(r"^agent-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", re.IGNORECASE)
|
39
40
|
|
40
41
|
# String in the error message for when the context window is too large
|
41
42
|
# Example full message:
|
@@ -330,15 +331,15 @@ READ_ONLY_BLOCK_EDIT_ERROR = f"{ERROR_MESSAGE_PREFIX} This block is read-only an
|
|
330
331
|
MESSAGE_SUMMARY_REQUEST_ACK = "Understood, I will respond with a summary of the message (and only the summary, nothing else) once I receive the conversation history. I'm ready."
|
331
332
|
|
332
333
|
# Maximum length of an error message
|
333
|
-
MAX_ERROR_MESSAGE_CHAR_LIMIT =
|
334
|
+
MAX_ERROR_MESSAGE_CHAR_LIMIT = 1000
|
334
335
|
|
335
336
|
# Default memory limits
|
336
|
-
CORE_MEMORY_PERSONA_CHAR_LIMIT: int =
|
337
|
-
CORE_MEMORY_HUMAN_CHAR_LIMIT: int =
|
338
|
-
CORE_MEMORY_BLOCK_CHAR_LIMIT: int =
|
337
|
+
CORE_MEMORY_PERSONA_CHAR_LIMIT: int = 20000
|
338
|
+
CORE_MEMORY_HUMAN_CHAR_LIMIT: int = 20000
|
339
|
+
CORE_MEMORY_BLOCK_CHAR_LIMIT: int = 20000
|
339
340
|
|
340
341
|
# Function return limits
|
341
|
-
FUNCTION_RETURN_CHAR_LIMIT =
|
342
|
+
FUNCTION_RETURN_CHAR_LIMIT = 50000 # ~300 words
|
342
343
|
BASE_FUNCTION_RETURN_CHAR_LIMIT = 1000000 # very high (we rely on implementation)
|
343
344
|
FILE_IS_TRUNCATED_WARNING = "# NOTE: This block is truncated, use functions to view the full content."
|
344
345
|
|
@@ -396,5 +397,7 @@ PINECONE_THROTTLE_DELAY = 0.75 # seconds base delay between batches
|
|
396
397
|
WEB_SEARCH_MODEL_ENV_VAR_NAME = "LETTA_BUILTIN_WEBSEARCH_OPENAI_MODEL_NAME"
|
397
398
|
WEB_SEARCH_MODEL_ENV_VAR_DEFAULT_VALUE = "gpt-4.1-mini-2025-04-14"
|
398
399
|
|
399
|
-
# Excluded
|
400
|
-
|
400
|
+
# Excluded model keywords from base tool rules
|
401
|
+
EXCLUDE_MODEL_KEYWORDS_FROM_BASE_TOOL_RULES = ["claude-4-sonnet", "claude-3-5-sonnet", "gpt-5", "gemini-2.5-pro"]
|
402
|
+
# But include models with these keywords in base tool rules (overrides exclusion)
|
403
|
+
INCLUDE_MODEL_KEYWORDS_BASE_TOOL_RULES = ["mini"]
|
@@ -4,7 +4,6 @@ import typer
|
|
4
4
|
|
5
5
|
from letta.constants import EMBEDDING_BATCH_SIZE
|
6
6
|
from letta.data_sources.connectors_helper import assert_all_files_exist_locally, extract_metadata_from_files, get_filenames_in_dir
|
7
|
-
from letta.embeddings import embedding_model
|
8
7
|
from letta.schemas.file import FileMetadata
|
9
8
|
from letta.schemas.passage import Passage
|
10
9
|
from letta.schemas.source import Source
|
@@ -40,61 +39,29 @@ class DataConnector:
|
|
40
39
|
|
41
40
|
async def load_data(connector: DataConnector, source: Source, passage_manager: PassageManager, file_manager: FileManager, actor: "User"):
|
42
41
|
from letta.llm_api.llm_client import LLMClient
|
43
|
-
from letta.schemas.embedding_config import EmbeddingConfig
|
44
42
|
|
45
43
|
"""Load data from a connector (generates file and passages) into a specified source_id, associated with a user_id."""
|
46
44
|
embedding_config = source.embedding_config
|
47
45
|
|
48
46
|
# insert passages/file
|
49
|
-
texts = []
|
50
47
|
embedding_to_document_name = {}
|
51
48
|
passage_count = 0
|
52
49
|
file_count = 0
|
53
50
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
client = LLMClient.create(
|
60
|
-
provider_type=embedding_config.embedding_endpoint_type,
|
61
|
-
actor=actor,
|
62
|
-
)
|
63
|
-
embeddings = await client.request_embeddings(texts, embedding_config)
|
64
|
-
|
65
|
-
else:
|
66
|
-
embed_model = embedding_model(embedding_config)
|
67
|
-
embeddings = [embed_model.get_text_embedding(text) for text in texts]
|
68
|
-
|
69
|
-
# collate passage and embedding
|
70
|
-
for text, embedding in zip(texts, embeddings):
|
71
|
-
passage = Passage(
|
72
|
-
text=text,
|
73
|
-
file_id=file_metadata.id,
|
74
|
-
source_id=source.id,
|
75
|
-
metadata=passage_metadata,
|
76
|
-
organization_id=source.organization_id,
|
77
|
-
embedding_config=source.embedding_config,
|
78
|
-
embedding=embedding,
|
79
|
-
)
|
80
|
-
hashable_embedding = tuple(passage.embedding)
|
81
|
-
file_name = file_metadata.file_name
|
82
|
-
if hashable_embedding in embedding_to_document_name:
|
83
|
-
typer.secho(
|
84
|
-
f"Warning: Duplicate embedding found for passage in {file_name} (already exists in {embedding_to_document_name[hashable_embedding]}), skipping insert into VectorDB.",
|
85
|
-
fg=typer.colors.YELLOW,
|
86
|
-
)
|
87
|
-
continue
|
88
|
-
|
89
|
-
passages.append(passage)
|
90
|
-
embedding_to_document_name[hashable_embedding] = file_name
|
91
|
-
return passages
|
51
|
+
# Use the new LLMClient for all embedding requests
|
52
|
+
client = LLMClient.create(
|
53
|
+
provider_type=embedding_config.embedding_endpoint_type,
|
54
|
+
actor=actor,
|
55
|
+
)
|
92
56
|
|
93
57
|
for file_metadata in connector.find_files(source):
|
94
58
|
file_count += 1
|
95
59
|
await file_manager.create_file(file_metadata, actor)
|
96
60
|
|
97
|
-
# generate passages
|
61
|
+
# generate passages for this file
|
62
|
+
texts = []
|
63
|
+
metadatas = []
|
64
|
+
|
98
65
|
for passage_text, passage_metadata in connector.generate_passages(file_metadata, chunk_size=embedding_config.embedding_chunk_size):
|
99
66
|
# for some reason, llama index parsers sometimes return empty strings
|
100
67
|
if len(passage_text) == 0:
|
@@ -104,24 +71,74 @@ async def load_data(connector: DataConnector, source: Source, passage_manager: P
|
|
104
71
|
)
|
105
72
|
continue
|
106
73
|
|
107
|
-
# get embedding
|
108
74
|
texts.append(passage_text)
|
75
|
+
metadatas.append(passage_metadata)
|
76
|
+
|
109
77
|
if len(texts) >= EMBEDDING_BATCH_SIZE:
|
110
|
-
|
78
|
+
# Process the batch
|
79
|
+
embeddings = await client.request_embeddings(texts, embedding_config)
|
80
|
+
passages = []
|
81
|
+
|
82
|
+
for text, embedding, passage_metadata in zip(texts, embeddings, metadatas):
|
83
|
+
passage = Passage(
|
84
|
+
text=text,
|
85
|
+
file_id=file_metadata.id,
|
86
|
+
source_id=source.id,
|
87
|
+
metadata=passage_metadata,
|
88
|
+
organization_id=source.organization_id,
|
89
|
+
embedding_config=source.embedding_config,
|
90
|
+
embedding=embedding,
|
91
|
+
)
|
92
|
+
hashable_embedding = tuple(passage.embedding)
|
93
|
+
file_name = file_metadata.file_name
|
94
|
+
if hashable_embedding in embedding_to_document_name:
|
95
|
+
typer.secho(
|
96
|
+
f"Warning: Duplicate embedding found for passage in {file_name} (already exists in {embedding_to_document_name[hashable_embedding]}), skipping insert into VectorDB.",
|
97
|
+
fg=typer.colors.YELLOW,
|
98
|
+
)
|
99
|
+
continue
|
100
|
+
|
101
|
+
passages.append(passage)
|
102
|
+
embedding_to_document_name[hashable_embedding] = file_name
|
103
|
+
|
104
|
+
# insert passages into passage store
|
105
|
+
await passage_manager.create_many_passages_async(passages, actor)
|
106
|
+
passage_count += len(passages)
|
107
|
+
|
108
|
+
# Reset for next batch
|
111
109
|
texts = []
|
112
|
-
|
113
|
-
|
110
|
+
metadatas = []
|
111
|
+
|
112
|
+
# Process final remaining texts for this file
|
113
|
+
if len(texts) > 0:
|
114
|
+
embeddings = await client.request_embeddings(texts, embedding_config)
|
115
|
+
passages = []
|
116
|
+
|
117
|
+
for text, embedding, passage_metadata in zip(texts, embeddings, metadatas):
|
118
|
+
passage = Passage(
|
119
|
+
text=text,
|
120
|
+
file_id=file_metadata.id,
|
121
|
+
source_id=source.id,
|
122
|
+
metadata=passage_metadata,
|
123
|
+
organization_id=source.organization_id,
|
124
|
+
embedding_config=source.embedding_config,
|
125
|
+
embedding=embedding,
|
126
|
+
)
|
127
|
+
hashable_embedding = tuple(passage.embedding)
|
128
|
+
file_name = file_metadata.file_name
|
129
|
+
if hashable_embedding in embedding_to_document_name:
|
130
|
+
typer.secho(
|
131
|
+
f"Warning: Duplicate embedding found for passage in {file_name} (already exists in {embedding_to_document_name[hashable_embedding]}), skipping insert into VectorDB.",
|
132
|
+
fg=typer.colors.YELLOW,
|
133
|
+
)
|
134
|
+
continue
|
135
|
+
|
136
|
+
passages.append(passage)
|
137
|
+
embedding_to_document_name[hashable_embedding] = file_name
|
114
138
|
|
115
|
-
# insert passages into passage store
|
116
139
|
await passage_manager.create_many_passages_async(passages, actor)
|
117
140
|
passage_count += len(passages)
|
118
141
|
|
119
|
-
# final remaining
|
120
|
-
if len(texts) > 0:
|
121
|
-
passages = await generate_embeddings(texts, embedding_config)
|
122
|
-
await passage_manager.create_many_passages_async(passages, actor)
|
123
|
-
passage_count += len(passages)
|
124
|
-
|
125
142
|
return passage_count, file_count
|
126
143
|
|
127
144
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
from typing import List
|
2
|
+
|
3
|
+
import tiktoken
|
4
|
+
|
5
|
+
from letta.constants import EMBEDDING_TO_TOKENIZER_DEFAULT, EMBEDDING_TO_TOKENIZER_MAP
|
6
|
+
from letta.utils import printd
|
7
|
+
|
8
|
+
|
9
|
+
def parse_and_chunk_text(text: str, chunk_size: int) -> List[str]:
|
10
|
+
from llama_index.core import Document as LlamaIndexDocument
|
11
|
+
from llama_index.core.node_parser import SentenceSplitter
|
12
|
+
|
13
|
+
parser = SentenceSplitter(chunk_size=chunk_size)
|
14
|
+
llama_index_docs = [LlamaIndexDocument(text=text)]
|
15
|
+
nodes = parser.get_nodes_from_documents(llama_index_docs)
|
16
|
+
return [n.text for n in nodes]
|
17
|
+
|
18
|
+
|
19
|
+
def truncate_text(text: str, max_length: int, encoding) -> str:
|
20
|
+
# truncate the text based on max_length and encoding
|
21
|
+
encoded_text = encoding.encode(text)[:max_length]
|
22
|
+
return encoding.decode(encoded_text)
|
23
|
+
|
24
|
+
|
25
|
+
def check_and_split_text(text: str, embedding_model: str) -> List[str]:
|
26
|
+
"""Split text into chunks of max_length tokens or less"""
|
27
|
+
|
28
|
+
if embedding_model in EMBEDDING_TO_TOKENIZER_MAP:
|
29
|
+
encoding = tiktoken.get_encoding(EMBEDDING_TO_TOKENIZER_MAP[embedding_model])
|
30
|
+
else:
|
31
|
+
print(f"Warning: couldn't find tokenizer for model {embedding_model}, using default tokenizer {EMBEDDING_TO_TOKENIZER_DEFAULT}")
|
32
|
+
encoding = tiktoken.get_encoding(EMBEDDING_TO_TOKENIZER_DEFAULT)
|
33
|
+
|
34
|
+
num_tokens = len(encoding.encode(text))
|
35
|
+
|
36
|
+
# determine max length
|
37
|
+
if hasattr(encoding, "max_length"):
|
38
|
+
# TODO(fix) this is broken
|
39
|
+
max_length = encoding.max_length
|
40
|
+
else:
|
41
|
+
# TODO: figure out the real number
|
42
|
+
printd(f"Warning: couldn't find max_length for tokenizer {embedding_model}, using default max_length 8191")
|
43
|
+
max_length = 8191
|
44
|
+
|
45
|
+
# truncate text if too long
|
46
|
+
if num_tokens > max_length:
|
47
|
+
print(f"Warning: text is too long ({num_tokens} tokens), truncating to {max_length} tokens.")
|
48
|
+
# First, apply any necessary formatting
|
49
|
+
formatted_text = format_text(text, embedding_model)
|
50
|
+
# Then truncate
|
51
|
+
text = truncate_text(formatted_text, max_length, encoding)
|
52
|
+
|
53
|
+
return [text]
|
{letta_nightly-0.11.3.dev20250819104229 → letta_nightly-0.11.4.dev20250820213507}/letta/errors.py
RENAMED
@@ -236,5 +236,33 @@ class AgentFileExportError(Exception):
|
|
236
236
|
"""Exception raised during agent file export operations"""
|
237
237
|
|
238
238
|
|
239
|
+
class AgentNotFoundForExportError(AgentFileExportError):
|
240
|
+
"""Exception raised when requested agents are not found during export"""
|
241
|
+
|
242
|
+
def __init__(self, missing_ids: List[str]):
|
243
|
+
self.missing_ids = missing_ids
|
244
|
+
super().__init__(f"The following agent IDs were not found: {missing_ids}")
|
245
|
+
|
246
|
+
|
247
|
+
class AgentExportIdMappingError(AgentFileExportError):
|
248
|
+
"""Exception raised when ID mapping fails during export conversion"""
|
249
|
+
|
250
|
+
def __init__(self, db_id: str, entity_type: str):
|
251
|
+
self.db_id = db_id
|
252
|
+
self.entity_type = entity_type
|
253
|
+
super().__init__(
|
254
|
+
f"Unexpected new {entity_type} ID '{db_id}' encountered during conversion. "
|
255
|
+
f"All IDs should have been mapped during agent processing."
|
256
|
+
)
|
257
|
+
|
258
|
+
|
259
|
+
class AgentExportProcessingError(AgentFileExportError):
|
260
|
+
"""Exception raised when general export processing fails"""
|
261
|
+
|
262
|
+
def __init__(self, message: str, original_error: Optional[Exception] = None):
|
263
|
+
self.original_error = original_error
|
264
|
+
super().__init__(f"Export failed: {message}")
|
265
|
+
|
266
|
+
|
239
267
|
class AgentFileImportError(Exception):
|
240
268
|
"""Exception raised during agent file import operations"""
|