letta-nightly 0.7.9.dev20250504104059__tar.gz → 0.7.10.dev20250506042051__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.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/PKG-INFO +1 -1
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/__init__.py +1 -1
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/letta_agent_batch.py +46 -7
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/voice_agent.py +9 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/interfaces/openai_chat_completions_streaming_interface.py +10 -9
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/anthropic.py +4 -1
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/google_constants.py +1 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/google_vertex_client.py +6 -6
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/app.py +0 -11
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/blocks.py +12 -1
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/groups.py +20 -9
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/utils.py +3 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/server.py +1 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/agent_manager.py +13 -2
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/block_manager.py +56 -1
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/group_manager.py +11 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/pyproject.toml +1 -1
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/LICENSE +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/README.md +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/__main__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/base_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/ephemeral_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/exceptions.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/letta_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agents/voice_sleeptime_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/benchmark/benchmark.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/benchmark/constants.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/cli/cli.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/cli/cli_config.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/cli/cli_load.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/client/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/client/client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/client/streaming.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/client/utils.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/config.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/constants.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/data_sources/connectors.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/data_sources/connectors_helper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/embeddings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/errors.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/ast_parsers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/composio_helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/function_sets/base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/function_sets/extras.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/function_sets/multi_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/function_sets/voice.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/functions.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/mcp_client/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/mcp_client/base_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/mcp_client/exceptions.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/mcp_client/sse_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/mcp_client/stdio_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/mcp_client/types.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/functions/schema_generator.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/groups/dynamic_multi_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/groups/helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/groups/round_robin_multi_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/groups/sleeptime_multi_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/groups/sleeptime_multi_agent_v2.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/groups/supervisor_multi_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/composio_helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/converters.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/datetime_helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/json_helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/message_helper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/tool_execution_helper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/helpers/tool_rule_solver.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/humans/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/humans/examples/basic.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/humans/examples/cs_phd.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/interfaces/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/interfaces/anthropic_streaming_interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/interfaces/utils.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/jobs/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/jobs/helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/jobs/llm_batch_job_polling.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/jobs/scheduler.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/jobs/types.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/anthropic_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/aws_bedrock.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/azure_openai.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/azure_openai_constants.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/cohere.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/deepseek.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/google_ai_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/helpers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/llm_api_tools.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/llm_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/llm_client_base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/mistral.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/openai.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/llm_api/openai_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/README.md +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/chat_completion_proxy.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/constants.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/function_parser.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/grammars/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/grammars/json.gbnf +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/json_parser.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/koboldcpp/api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/koboldcpp/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llamacpp/api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llamacpp/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/lmstudio/api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/lmstudio/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/ollama/api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/ollama/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/settings/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/settings/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/settings/simple.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/utils.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/vllm/api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/webui/api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/webui/legacy_api.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/webui/legacy_settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/local_llm/webui/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/log.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/main.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/memory.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/openai_backcompat/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/openai_backcompat/openai_object.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/__all__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/agents_tags.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/block.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/block_history.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/blocks_agents.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/custom_columns.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/enums.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/errors.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/file.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/group.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/groups_agents.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/groups_blocks.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/identities_agents.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/identities_blocks.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/identity.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/job.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/job_messages.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/llm_batch_items.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/llm_batch_job.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/message.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/mixins.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/organization.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/passage.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/provider.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/sandbox_config.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/source.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/sources_agents.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/sqlalchemy_base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/sqlite_functions.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/step.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/tool.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/tools_agents.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/orm/user.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/anna_pa.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/google_search_persona.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/memgpt_doc.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/memgpt_starter.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/o1_persona.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/sam.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/sam_pov.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/sqldb/test.db +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/personas/examples/voice_memory_persona.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/gpt_summarize.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/gpt_system.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_base.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_chat.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_convo_only.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_doc.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_memory_only.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/sleeptime.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/voice_chat.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/prompts/system/voice_sleeptime.txt +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/pytest.ini +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/block.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/embedding_config.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/embedding_config_overrides.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/enums.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/environment_variables.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/file.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/group.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/health.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/identity.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/job.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/letta_base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/letta_message.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/letta_message_content.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/letta_request.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/letta_response.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/llm_batch_job.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/llm_config.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/llm_config_overrides.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/memory.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/message.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/openai/chat_completion_request.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/openai/chat_completion_response.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/openai/chat_completions.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/openai/embedding_response.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/openai/openai.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/organization.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/passage.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/providers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/response_format.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/run.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/sandbox_config.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/source.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/step.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/tool.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/tool_execution_result.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/tool_rule.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/usage.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/schemas/user.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_agent.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_block.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_message.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_tag.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/marshmallow_tool.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/constants.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/db.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/generate_openapi_schema.sh +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/auth/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/auth/index.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/auth_token.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/chat_completions_interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/json_parser.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/agents.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/health.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/identities.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/jobs.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/llms.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/messages.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/organizations.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/providers.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/runs.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/sources.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/steps.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/tags.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/tools.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/users.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/routers/v1/voice.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/rest_api/static_files.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/startup.sh +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/static_files/assets/index-048c9598.js +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/static_files/assets/index-0e31b727.css +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/static_files/favicon.ico +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/static_files/index.html +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/utils.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/ws_api/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/ws_api/example_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/ws_api/interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/ws_api/protocol.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/server/ws_api/server.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/helpers/agent_manager_helper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/helpers/tool_execution_helper.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/identity_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/job_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/llm_batch_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/mcp/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/mcp/base_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/mcp/sse_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/mcp/stdio_client.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/mcp/types.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/message_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/organization_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/passage_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/per_agent_lock_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/provider_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/sandbox_config_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/source_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/step_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/summarizer/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/summarizer/enums.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/summarizer/summarizer.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_executor/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_executor/tool_execution_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_executor/tool_executor.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_sandbox/__init__.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_sandbox/base.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/tool_sandbox/local_sandbox.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/services/user_manager.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/settings.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/streaming_interface.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/streaming_utils.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/system.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/tracing.py +0 -0
- {letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/utils.py +0 -0
@@ -66,7 +66,7 @@ class _ResumeContext:
|
|
66
66
|
request_status_updates: List[RequestStatusUpdateInfo]
|
67
67
|
|
68
68
|
|
69
|
-
async def execute_tool_wrapper(params: ToolExecutionParams):
|
69
|
+
async def execute_tool_wrapper(params: ToolExecutionParams) -> Tuple[str, Tuple[str, bool]]:
|
70
70
|
"""
|
71
71
|
Executes the tool in an out‑of‑process worker and returns:
|
72
72
|
(agent_id, (tool_result:str, success_flag:bool))
|
@@ -324,8 +324,13 @@ class LettaAgentBatch:
|
|
324
324
|
@trace_method
|
325
325
|
async def _execute_tools(self, ctx: _ResumeContext) -> Sequence[Tuple[str, Tuple[str, bool]]]:
|
326
326
|
sbx_cfg, sbx_env = self._build_sandbox()
|
327
|
-
|
328
|
-
|
327
|
+
rethink_memory_tool_name = "rethink_memory"
|
328
|
+
tool_params = []
|
329
|
+
# TODO: This is a special case - we need to think about how to generalize this
|
330
|
+
# TODO: Rethink memory is a common op that is easily batchable, so we pull this logic out
|
331
|
+
rethink_memory_params = []
|
332
|
+
for aid in ctx.agent_ids:
|
333
|
+
param = ToolExecutionParams(
|
329
334
|
agent_id=aid,
|
330
335
|
tool_call_name=ctx.tool_call_name_map[aid],
|
331
336
|
tool_args=ctx.tool_call_args_map[aid],
|
@@ -334,10 +339,44 @@ class LettaAgentBatch:
|
|
334
339
|
sbx_config=sbx_cfg,
|
335
340
|
sbx_env_vars=sbx_env,
|
336
341
|
)
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
342
|
+
|
343
|
+
if ctx.tool_call_name_map[aid] == rethink_memory_tool_name:
|
344
|
+
rethink_memory_params.append(param)
|
345
|
+
else:
|
346
|
+
tool_params.append(param)
|
347
|
+
|
348
|
+
if rethink_memory_params:
|
349
|
+
return self._bulk_rethink_memory(rethink_memory_params)
|
350
|
+
|
351
|
+
if tool_params:
|
352
|
+
async with Pool() as pool:
|
353
|
+
return await pool.map(execute_tool_wrapper, tool_params)
|
354
|
+
|
355
|
+
@trace_method
|
356
|
+
def _bulk_rethink_memory(self, params: List[ToolExecutionParams]) -> Sequence[Tuple[str, Tuple[str, bool]]]:
|
357
|
+
updates = {}
|
358
|
+
result = []
|
359
|
+
for param in params:
|
360
|
+
# Sanity check
|
361
|
+
# TODO: This is very brittle and done quickly for performance
|
362
|
+
# TODO: If the end tool is changed, this will break
|
363
|
+
# TODO: Move 'rethink_memory' to a native Letta tool that we control
|
364
|
+
if "new_memory" not in param.tool_args or "target_block_label" not in param.tool_args:
|
365
|
+
raise ValueError(f"Missing either `new_memory` or `target_block_label` in the tool args: {param.tool_args}")
|
366
|
+
|
367
|
+
# Find the block id/update
|
368
|
+
block_id = param.agent_state.memory.get_block(label=param.tool_args.get("target_block_label")).id
|
369
|
+
new_value = param.tool_args.get("new_memory")
|
370
|
+
|
371
|
+
# This is sensitive to multiple agents overwriting the same memory block
|
372
|
+
updates[block_id] = new_value
|
373
|
+
|
374
|
+
# TODO: This is quite ugly and confusing - this is mostly to align with the returns of other tools
|
375
|
+
result.append((param.agent_id, ("", True)))
|
376
|
+
|
377
|
+
self.block_manager.bulk_update_block_values(updates=updates, actor=self.actor)
|
378
|
+
|
379
|
+
return result
|
341
380
|
|
342
381
|
def _persist_tool_messages(
|
343
382
|
self,
|
@@ -46,6 +46,7 @@ from letta.services.message_manager import MessageManager
|
|
46
46
|
from letta.services.passage_manager import PassageManager
|
47
47
|
from letta.services.summarizer.enums import SummarizationMode
|
48
48
|
from letta.services.summarizer.summarizer import Summarizer
|
49
|
+
from letta.settings import model_settings
|
49
50
|
from letta.utils import united_diff
|
50
51
|
|
51
52
|
logger = get_logger(__name__)
|
@@ -125,6 +126,14 @@ class VoiceAgent(BaseAgent):
|
|
125
126
|
|
126
127
|
agent_state = self.agent_manager.get_agent_by_id(self.agent_id, actor=self.actor)
|
127
128
|
|
129
|
+
# TODO: Refactor this so it uses our in-house clients
|
130
|
+
# TODO: For now, piggyback off of OpenAI client for ease
|
131
|
+
if agent_state.llm_config.model_endpoint_type == "anthropic":
|
132
|
+
self.openai_client.api_key = model_settings.anthropic_api_key
|
133
|
+
self.openai_client.base_url = "https://api.anthropic.com/v1/"
|
134
|
+
elif agent_state.llm_config.model_endpoint_type != "openai":
|
135
|
+
raise ValueError("Letta voice agents are only compatible with OpenAI or Anthropic.")
|
136
|
+
|
128
137
|
# Safety check
|
129
138
|
if agent_state.agent_type != AgentType.voice_convo_agent:
|
130
139
|
raise IncompatibleAgentType(expected_type=AgentType.voice_convo_agent, actual_type=agent_state.agent_type)
|
@@ -35,18 +35,19 @@ class OpenAIChatCompletionsStreamingInterface:
|
|
35
35
|
"""
|
36
36
|
async with stream:
|
37
37
|
async for chunk in stream:
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
if chunk.choices:
|
39
|
+
choice = chunk.choices[0]
|
40
|
+
delta = choice.delta
|
41
|
+
finish_reason = choice.finish_reason
|
41
42
|
|
42
|
-
|
43
|
-
|
43
|
+
async for sse_chunk in self._process_content(delta, chunk):
|
44
|
+
yield sse_chunk
|
44
45
|
|
45
|
-
|
46
|
-
|
46
|
+
async for sse_chunk in self._process_tool_calls(delta, chunk):
|
47
|
+
yield sse_chunk
|
47
48
|
|
48
|
-
|
49
|
-
|
49
|
+
if self._handle_finish_reason(finish_reason):
|
50
|
+
break
|
50
51
|
|
51
52
|
async def _process_content(self, delta: ChoiceDelta, chunk: ChatCompletionChunk) -> AsyncGenerator[str, None]:
|
52
53
|
"""Processes regular content tokens and streams them."""
|
@@ -115,6 +115,8 @@ MODEL_LIST = [
|
|
115
115
|
|
116
116
|
DUMMY_FIRST_USER_MESSAGE = "User initializing bootup sequence."
|
117
117
|
|
118
|
+
VALID_EVENT_TYPES = {"content_block_stop", "message_stop"}
|
119
|
+
|
118
120
|
|
119
121
|
def antropic_get_model_context_window(url: str, api_key: Union[str, None], model: str) -> int:
|
120
122
|
for model_dict in anthropic_get_model_list(url=url, api_key=api_key):
|
@@ -596,7 +598,8 @@ def convert_anthropic_stream_event_to_chatcompletion(
|
|
596
598
|
redacted_reasoning_content = event.content_block.data
|
597
599
|
else:
|
598
600
|
warnings.warn("Unexpected content start type: " + str(type(event.content_block)))
|
599
|
-
|
601
|
+
elif event.type in VALID_EVENT_TYPES:
|
602
|
+
pass
|
600
603
|
else:
|
601
604
|
warnings.warn("Unexpected event type: " + event.type)
|
602
605
|
|
@@ -110,12 +110,12 @@ class GoogleVertexClient(GoogleAIClient):
|
|
110
110
|
for candidate in response.candidates:
|
111
111
|
content = candidate.content
|
112
112
|
|
113
|
-
if "role" not in content or not content["role"]:
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
role = content["role"]
|
118
|
-
assert role == "model", f"Unknown role in response: {role}"
|
113
|
+
# if "role" not in content or not content["role"]:
|
114
|
+
# # This means the response is malformed like MALFORMED_FUNCTION_CALL
|
115
|
+
# # NOTE: must be a ValueError to trigger a retry
|
116
|
+
# raise ValueError(f"Error in response data from LLM: {response_data}")
|
117
|
+
# role = content["role"]
|
118
|
+
# assert role == "model", f"Unknown role in response: {role}"
|
119
119
|
|
120
120
|
parts = content.parts
|
121
121
|
|
@@ -181,17 +181,6 @@ def create_application() -> "FastAPI":
|
|
181
181
|
},
|
182
182
|
)
|
183
183
|
|
184
|
-
@app.exception_handler(IncompatibleAgentType)
|
185
|
-
async def handle_incompatible_agent_type(request: Request, exc: IncompatibleAgentType):
|
186
|
-
return JSONResponse(
|
187
|
-
status_code=400,
|
188
|
-
content={
|
189
|
-
"detail": str(exc),
|
190
|
-
"expected_type": exc.expected_type,
|
191
|
-
"actual_type": exc.actual_type,
|
192
|
-
},
|
193
|
-
)
|
194
|
-
|
195
184
|
@app.exception_handler(Exception)
|
196
185
|
async def generic_error_handler(request: Request, exc: Exception):
|
197
186
|
# Log the actual error for debugging
|
@@ -31,11 +31,22 @@ def list_blocks(
|
|
31
31
|
)
|
32
32
|
|
33
33
|
|
34
|
+
@router.get("/count", response_model=int, operation_id="count_blocks")
|
35
|
+
def count_blocks(
|
36
|
+
server: SyncServer = Depends(get_letta_server),
|
37
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
38
|
+
):
|
39
|
+
"""
|
40
|
+
Count all blocks created by a user.
|
41
|
+
"""
|
42
|
+
return server.block_manager.size(actor=server.user_manager.get_user_or_default(user_id=actor_id))
|
43
|
+
|
44
|
+
|
34
45
|
@router.post("/", response_model=Block, operation_id="create_block")
|
35
46
|
def create_block(
|
36
47
|
create_block: CreateBlock = Body(...),
|
37
48
|
server: SyncServer = Depends(get_letta_server),
|
38
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
49
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
39
50
|
):
|
40
51
|
actor = server.user_manager.get_user_or_default(user_id=actor_id)
|
41
52
|
block = Block(**create_block.model_dump())
|
@@ -40,11 +40,22 @@ def list_groups(
|
|
40
40
|
)
|
41
41
|
|
42
42
|
|
43
|
+
@router.get("/count", response_model=int, operation_id="count_groups")
|
44
|
+
def count_groups(
|
45
|
+
server: SyncServer = Depends(get_letta_server),
|
46
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
47
|
+
):
|
48
|
+
"""
|
49
|
+
Get the count of all groups associated with a given user.
|
50
|
+
"""
|
51
|
+
return server.group_manager.size(actor=server.user_manager.get_user_or_default(user_id=actor_id))
|
52
|
+
|
53
|
+
|
43
54
|
@router.get("/{group_id}", response_model=Group, operation_id="retrieve_group")
|
44
55
|
def retrieve_group(
|
45
56
|
group_id: str,
|
46
57
|
server: "SyncServer" = Depends(get_letta_server),
|
47
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
58
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
48
59
|
):
|
49
60
|
"""
|
50
61
|
Retrieve the group by id.
|
@@ -61,7 +72,7 @@ def retrieve_group(
|
|
61
72
|
def create_group(
|
62
73
|
group: GroupCreate = Body(...),
|
63
74
|
server: "SyncServer" = Depends(get_letta_server),
|
64
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
75
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
65
76
|
x_project: Optional[str] = Header(None, alias="X-Project"), # Only handled by next js middleware
|
66
77
|
):
|
67
78
|
"""
|
@@ -79,7 +90,7 @@ def modify_group(
|
|
79
90
|
group_id: str,
|
80
91
|
group: GroupUpdate = Body(...),
|
81
92
|
server: "SyncServer" = Depends(get_letta_server),
|
82
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
93
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
83
94
|
x_project: Optional[str] = Header(None, alias="X-Project"), # Only handled by next js middleware
|
84
95
|
):
|
85
96
|
"""
|
@@ -96,7 +107,7 @@ def modify_group(
|
|
96
107
|
def delete_group(
|
97
108
|
group_id: str,
|
98
109
|
server: "SyncServer" = Depends(get_letta_server),
|
99
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
110
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
100
111
|
):
|
101
112
|
"""
|
102
113
|
Delete a multi-agent group.
|
@@ -118,7 +129,7 @@ async def send_group_message(
|
|
118
129
|
group_id: str,
|
119
130
|
server: SyncServer = Depends(get_letta_server),
|
120
131
|
request: LettaRequest = Body(...),
|
121
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
132
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
122
133
|
):
|
123
134
|
"""
|
124
135
|
Process a user message and return the group's response.
|
@@ -156,7 +167,7 @@ async def send_group_message_streaming(
|
|
156
167
|
group_id: str,
|
157
168
|
server: SyncServer = Depends(get_letta_server),
|
158
169
|
request: LettaStreamingRequest = Body(...),
|
159
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
170
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
160
171
|
):
|
161
172
|
"""
|
162
173
|
Process a user message and return the group's responses.
|
@@ -189,7 +200,7 @@ def modify_group_message(
|
|
189
200
|
message_id: str,
|
190
201
|
request: LettaMessageUpdateUnion = Body(...),
|
191
202
|
server: "SyncServer" = Depends(get_letta_server),
|
192
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
203
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
193
204
|
):
|
194
205
|
"""
|
195
206
|
Update the details of a message associated with an agent.
|
@@ -209,7 +220,7 @@ def list_group_messages(
|
|
209
220
|
use_assistant_message: bool = Query(True, description="Whether to use assistant messages"),
|
210
221
|
assistant_message_tool_name: str = Query(DEFAULT_MESSAGE_TOOL, description="The name of the designated message tool."),
|
211
222
|
assistant_message_tool_kwarg: str = Query(DEFAULT_MESSAGE_TOOL_KWARG, description="The name of the message argument."),
|
212
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
223
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
213
224
|
):
|
214
225
|
"""
|
215
226
|
Retrieve message history for an agent.
|
@@ -247,7 +258,7 @@ def list_group_messages(
|
|
247
258
|
def reset_group_messages(
|
248
259
|
group_id: str,
|
249
260
|
server: "SyncServer" = Depends(get_letta_server),
|
250
|
-
actor_id: Optional[str] = Header(None, alias="user_id"),
|
261
|
+
actor_id: Optional[str] = Header(None, alias="user_id"),
|
251
262
|
):
|
252
263
|
"""
|
253
264
|
Delete the group messages for all agents that are part of the multi-agent group.
|
@@ -20,6 +20,7 @@ from letta.helpers.message_helper import convert_message_creates_to_messages
|
|
20
20
|
from letta.log import get_logger
|
21
21
|
from letta.schemas.enums import MessageRole
|
22
22
|
from letta.schemas.letta_message_content import OmittedReasoningContent, ReasoningContent, RedactedReasoningContent, TextContent
|
23
|
+
from letta.schemas.llm_config import LLMConfig
|
23
24
|
from letta.schemas.message import Message, MessageCreate
|
24
25
|
from letta.schemas.usage import LettaUsageStatistics
|
25
26
|
from letta.schemas.user import User
|
@@ -53,6 +54,7 @@ async def sse_async_generator(
|
|
53
54
|
usage_task: Optional[asyncio.Task] = None,
|
54
55
|
finish_message=True,
|
55
56
|
request_start_timestamp_ns: Optional[int] = None,
|
57
|
+
llm_config: Optional[LLMConfig] = None,
|
56
58
|
):
|
57
59
|
"""
|
58
60
|
Wraps a generator for use in Server-Sent Events (SSE), handling errors and ensuring a completion message.
|
@@ -70,6 +72,7 @@ async def sse_async_generator(
|
|
70
72
|
ttft_span = None
|
71
73
|
if request_start_timestamp_ns is not None:
|
72
74
|
ttft_span = tracer.start_span("time_to_first_token", start_time=request_start_timestamp_ns)
|
75
|
+
ttft_span.set_attributes({f"llm_config.{k}": v for k, v in llm_config.model_dump().items()})
|
73
76
|
|
74
77
|
try:
|
75
78
|
async for chunk in generator:
|
@@ -866,8 +866,9 @@ class AgentManager:
|
|
866
866
|
@enforce_types
|
867
867
|
def trim_older_in_context_messages(self, num: int, agent_id: str, actor: PydanticUser) -> PydanticAgentState:
|
868
868
|
message_ids = self.get_agent_by_id(agent_id=agent_id, actor=actor).message_ids
|
869
|
-
|
870
|
-
|
869
|
+
newer_messages = self._trim_tool_response(agent_id=agent_id, actor=actor, message_ids=message_ids[num:])
|
870
|
+
trimmed_messages = [message_ids[0]] + newer_messages # 0 is system message
|
871
|
+
return self.set_in_context_messages(agent_id=agent_id, message_ids=trimmed_messages, actor=actor)
|
871
872
|
|
872
873
|
@enforce_types
|
873
874
|
def trim_all_in_context_messages_except_system(self, agent_id: str, actor: PydanticUser) -> PydanticAgentState:
|
@@ -876,6 +877,16 @@ class AgentManager:
|
|
876
877
|
new_messages = [message_ids[0]] # 0 is system message
|
877
878
|
return self.set_in_context_messages(agent_id=agent_id, message_ids=new_messages, actor=actor)
|
878
879
|
|
880
|
+
def _trim_tool_response(self, agent_id: str, actor: PydanticUser, message_ids: list[str]) -> PydanticAgentState:
|
881
|
+
"""
|
882
|
+
Trims the tool response from the in-context messages if there is no tool call present in trimmed messages.
|
883
|
+
"""
|
884
|
+
if message_ids:
|
885
|
+
messages = self.message_manager.get_messages_by_ids(message_ids=[message_ids[0]], actor=actor)
|
886
|
+
if messages and messages[0].role == "tool":
|
887
|
+
return message_ids[1:]
|
888
|
+
return message_ids
|
889
|
+
|
879
890
|
@enforce_types
|
880
891
|
def prepend_to_in_context_messages(self, messages: List[PydanticMessage], agent_id: str, actor: PydanticUser) -> PydanticAgentState:
|
881
892
|
message_ids = self.get_agent_by_id(agent_id=agent_id, actor=actor).message_ids
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import os
|
2
|
-
from typing import List, Optional
|
2
|
+
from typing import Dict, List, Optional
|
3
3
|
|
4
4
|
from sqlalchemy.orm import Session
|
5
5
|
|
6
|
+
from letta.log import get_logger
|
6
7
|
from letta.orm.block import Block as BlockModel
|
7
8
|
from letta.orm.block_history import BlockHistory
|
8
9
|
from letta.orm.enums import ActorType
|
@@ -13,6 +14,8 @@ from letta.schemas.block import BlockUpdate, Human, Persona
|
|
13
14
|
from letta.schemas.user import User as PydanticUser
|
14
15
|
from letta.utils import enforce_types, list_human_files, list_persona_files
|
15
16
|
|
17
|
+
logger = get_logger(__name__)
|
18
|
+
|
16
19
|
|
17
20
|
class BlockManager:
|
18
21
|
"""Manager class to handle business logic related to Blocks."""
|
@@ -165,6 +168,17 @@ class BlockManager:
|
|
165
168
|
|
166
169
|
return agents_pydantic
|
167
170
|
|
171
|
+
@enforce_types
|
172
|
+
def size(
|
173
|
+
self,
|
174
|
+
actor: PydanticUser,
|
175
|
+
) -> int:
|
176
|
+
"""
|
177
|
+
Get the total count of blocks for the given user.
|
178
|
+
"""
|
179
|
+
with self.session_maker() as session:
|
180
|
+
return BlockModel.size(db_session=session, actor=actor)
|
181
|
+
|
168
182
|
# Block History Functions
|
169
183
|
|
170
184
|
@enforce_types
|
@@ -349,3 +363,44 @@ class BlockManager:
|
|
349
363
|
|
350
364
|
session.commit()
|
351
365
|
return block.to_pydantic()
|
366
|
+
|
367
|
+
@enforce_types
|
368
|
+
def bulk_update_block_values(
|
369
|
+
self, updates: Dict[str, str], actor: PydanticUser, return_hydrated: bool = False
|
370
|
+
) -> Optional[List[PydanticBlock]]:
|
371
|
+
"""
|
372
|
+
Bulk-update the `value` field for multiple blocks in one transaction.
|
373
|
+
|
374
|
+
Args:
|
375
|
+
updates: mapping of block_id -> new value
|
376
|
+
actor: the user performing the update (for org scoping, permissions, audit)
|
377
|
+
return_hydrated: whether to return the pydantic Block objects that were updated
|
378
|
+
|
379
|
+
Returns:
|
380
|
+
the updated Block objects as Pydantic schemas
|
381
|
+
|
382
|
+
Raises:
|
383
|
+
NoResultFound if any block_id doesn’t exist or isn’t visible to this actor
|
384
|
+
ValueError if any new value exceeds its block’s limit
|
385
|
+
"""
|
386
|
+
with self.session_maker() as session:
|
387
|
+
q = session.query(BlockModel).filter(BlockModel.id.in_(updates.keys()), BlockModel.organization_id == actor.organization_id)
|
388
|
+
blocks = q.all()
|
389
|
+
|
390
|
+
found_ids = {b.id for b in blocks}
|
391
|
+
missing = set(updates.keys()) - found_ids
|
392
|
+
if missing:
|
393
|
+
logger.warning(f"Block IDs not found or inaccessible, skipping during bulk update: {missing!r}")
|
394
|
+
|
395
|
+
for block in blocks:
|
396
|
+
new_val = updates[block.id]
|
397
|
+
if len(new_val) > block.limit:
|
398
|
+
logger.warning(f"Value length ({len(new_val)}) exceeds limit " f"({block.limit}) for block {block.id!r}, truncating...")
|
399
|
+
new_val = new_val[: block.limit]
|
400
|
+
block.value = new_val
|
401
|
+
|
402
|
+
session.commit()
|
403
|
+
|
404
|
+
if return_hydrated:
|
405
|
+
return [b.to_pydantic() for b in blocks]
|
406
|
+
return None
|
@@ -239,6 +239,17 @@ class GroupManager:
|
|
239
239
|
|
240
240
|
return prev_last_processed_message_id
|
241
241
|
|
242
|
+
@enforce_types
|
243
|
+
def size(
|
244
|
+
self,
|
245
|
+
actor: PydanticUser,
|
246
|
+
) -> int:
|
247
|
+
"""
|
248
|
+
Get the total count of groups for the given user.
|
249
|
+
"""
|
250
|
+
with self.session_maker() as session:
|
251
|
+
return GroupModel.size(db_session=session, actor=actor)
|
252
|
+
|
242
253
|
def _process_agent_relationship(self, session: Session, group: GroupModel, agent_ids: List[str], allow_partial=False, replace=True):
|
243
254
|
if not agent_ids:
|
244
255
|
if replace:
|
File without changes
|
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/__main__.py
RENAMED
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/agent.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/cli/cli.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/config.py
RENAMED
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/constants.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/embeddings.py
RENAMED
File without changes
|
{letta_nightly-0.7.9.dev20250504104059 → letta_nightly-0.7.10.dev20250506042051}/letta/errors.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|