letta-nightly 0.7.5.dev20250426104040__tar.gz → 0.7.5.dev20250428110034__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.
Files changed (340) hide show
  1. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/PKG-INFO +1 -1
  2. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/letta_agent.py +11 -1
  3. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/groups/helpers.py +8 -5
  4. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/groups/sleeptime_multi_agent.py +3 -0
  5. letta_nightly-0.7.5.dev20250428110034/letta/groups/sleeptime_multi_agent_v2.py +249 -0
  6. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/__init__.py +2 -0
  7. letta_nightly-0.7.5.dev20250428110034/letta/server/rest_api/routers/v1/embeddings.py +20 -0
  8. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/llms.py +2 -2
  9. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/sources.py +11 -0
  10. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/tools.py +19 -1
  11. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/passage_manager.py +14 -0
  12. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_executor/tool_executor.py +8 -6
  13. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_manager.py +6 -9
  14. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/pyproject.toml +1 -1
  15. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/LICENSE +0 -0
  16. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/README.md +0 -0
  17. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/__init__.py +0 -0
  18. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/__main__.py +0 -0
  19. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agent.py +0 -0
  20. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/__init__.py +0 -0
  21. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/base_agent.py +0 -0
  22. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/ephemeral_agent.py +0 -0
  23. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/ephemeral_memory_agent.py +0 -0
  24. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/helpers.py +0 -0
  25. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/letta_agent_batch.py +0 -0
  26. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/agents/voice_agent.py +0 -0
  27. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/benchmark/benchmark.py +0 -0
  28. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/benchmark/constants.py +0 -0
  29. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/cli/cli.py +0 -0
  30. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/cli/cli_config.py +0 -0
  31. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/cli/cli_load.py +0 -0
  32. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/client/__init__.py +0 -0
  33. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/client/client.py +0 -0
  34. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/client/streaming.py +0 -0
  35. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/client/utils.py +0 -0
  36. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/config.py +0 -0
  37. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/constants.py +0 -0
  38. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/data_sources/connectors.py +0 -0
  39. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/data_sources/connectors_helper.py +0 -0
  40. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/embeddings.py +0 -0
  41. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/errors.py +0 -0
  42. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/__init__.py +0 -0
  43. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/ast_parsers.py +0 -0
  44. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/function_sets/base.py +0 -0
  45. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/function_sets/extras.py +0 -0
  46. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/function_sets/multi_agent.py +0 -0
  47. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/functions.py +0 -0
  48. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/helpers.py +0 -0
  49. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/interface.py +0 -0
  50. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/mcp_client/__init__.py +0 -0
  51. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/mcp_client/base_client.py +0 -0
  52. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/mcp_client/exceptions.py +0 -0
  53. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/mcp_client/sse_client.py +0 -0
  54. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/mcp_client/stdio_client.py +0 -0
  55. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/mcp_client/types.py +0 -0
  56. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/functions/schema_generator.py +0 -0
  57. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/groups/dynamic_multi_agent.py +0 -0
  58. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/groups/round_robin_multi_agent.py +0 -0
  59. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/groups/supervisor_multi_agent.py +0 -0
  60. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/__init__.py +0 -0
  61. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/composio_helpers.py +0 -0
  62. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/converters.py +0 -0
  63. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/datetime_helpers.py +0 -0
  64. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/json_helpers.py +0 -0
  65. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/message_helper.py +0 -0
  66. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/tool_execution_helper.py +0 -0
  67. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/helpers/tool_rule_solver.py +0 -0
  68. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/humans/__init__.py +0 -0
  69. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/humans/examples/basic.txt +0 -0
  70. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/humans/examples/cs_phd.txt +0 -0
  71. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/interface.py +0 -0
  72. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/interfaces/__init__.py +0 -0
  73. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/interfaces/anthropic_streaming_interface.py +0 -0
  74. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  75. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/interfaces/utils.py +0 -0
  76. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/jobs/__init__.py +0 -0
  77. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/jobs/helpers.py +0 -0
  78. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/jobs/llm_batch_job_polling.py +0 -0
  79. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/jobs/scheduler.py +0 -0
  80. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/jobs/types.py +0 -0
  81. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/__init__.py +0 -0
  82. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/anthropic.py +0 -0
  83. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/anthropic_client.py +0 -0
  84. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/aws_bedrock.py +0 -0
  85. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/azure_openai.py +0 -0
  86. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/azure_openai_constants.py +0 -0
  87. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/cohere.py +0 -0
  88. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/deepseek.py +0 -0
  89. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/google_ai_client.py +0 -0
  90. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/google_constants.py +0 -0
  91. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/google_vertex_client.py +0 -0
  92. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/helpers.py +0 -0
  93. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/llm_api_tools.py +0 -0
  94. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/llm_client.py +0 -0
  95. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/llm_client_base.py +0 -0
  96. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/mistral.py +0 -0
  97. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/openai.py +0 -0
  98. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/llm_api/openai_client.py +0 -0
  99. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/README.md +0 -0
  100. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/__init__.py +0 -0
  101. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/chat_completion_proxy.py +0 -0
  102. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/constants.py +0 -0
  103. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/function_parser.py +0 -0
  104. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/grammars/__init__.py +0 -0
  105. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  106. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/grammars/json.gbnf +0 -0
  107. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  108. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/json_parser.py +0 -0
  109. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/koboldcpp/api.py +0 -0
  110. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/koboldcpp/settings.py +0 -0
  111. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llamacpp/api.py +0 -0
  112. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llamacpp/settings.py +0 -0
  113. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  114. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  115. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  116. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  117. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  118. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  119. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  120. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  121. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  122. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/lmstudio/api.py +0 -0
  123. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/lmstudio/settings.py +0 -0
  124. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/ollama/api.py +0 -0
  125. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/ollama/settings.py +0 -0
  126. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/settings/__init__.py +0 -0
  127. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  128. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/settings/settings.py +0 -0
  129. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/settings/simple.py +0 -0
  130. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/utils.py +0 -0
  131. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/vllm/api.py +0 -0
  132. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/webui/api.py +0 -0
  133. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/webui/legacy_api.py +0 -0
  134. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/webui/legacy_settings.py +0 -0
  135. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/local_llm/webui/settings.py +0 -0
  136. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/log.py +0 -0
  137. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/main.py +0 -0
  138. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/memory.py +0 -0
  139. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/openai_backcompat/__init__.py +0 -0
  140. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/openai_backcompat/openai_object.py +0 -0
  141. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/__all__.py +0 -0
  142. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/__init__.py +0 -0
  143. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/agent.py +0 -0
  144. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/agents_tags.py +0 -0
  145. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/base.py +0 -0
  146. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/block.py +0 -0
  147. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/block_history.py +0 -0
  148. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/blocks_agents.py +0 -0
  149. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/custom_columns.py +0 -0
  150. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/enums.py +0 -0
  151. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/errors.py +0 -0
  152. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/file.py +0 -0
  153. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/group.py +0 -0
  154. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/groups_agents.py +0 -0
  155. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/groups_blocks.py +0 -0
  156. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/identities_agents.py +0 -0
  157. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/identities_blocks.py +0 -0
  158. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/identity.py +0 -0
  159. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/job.py +0 -0
  160. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/job_messages.py +0 -0
  161. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/llm_batch_items.py +0 -0
  162. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/llm_batch_job.py +0 -0
  163. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/message.py +0 -0
  164. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/mixins.py +0 -0
  165. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/organization.py +0 -0
  166. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/passage.py +0 -0
  167. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/provider.py +0 -0
  168. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/sandbox_config.py +0 -0
  169. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/source.py +0 -0
  170. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/sources_agents.py +0 -0
  171. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/sqlalchemy_base.py +0 -0
  172. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/sqlite_functions.py +0 -0
  173. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/step.py +0 -0
  174. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/tool.py +0 -0
  175. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/tools_agents.py +0 -0
  176. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/orm/user.py +0 -0
  177. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/__init__.py +0 -0
  178. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/anna_pa.txt +0 -0
  179. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/google_search_persona.txt +0 -0
  180. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/memgpt_doc.txt +0 -0
  181. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/memgpt_starter.txt +0 -0
  182. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/o1_persona.txt +0 -0
  183. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/sam.txt +0 -0
  184. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/sam_pov.txt +0 -0
  185. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  186. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
  187. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
  188. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/personas/examples/sqldb/test.db +0 -0
  189. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/__init__.py +0 -0
  190. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/gpt_summarize.py +0 -0
  191. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/gpt_system.py +0 -0
  192. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_base.txt +0 -0
  193. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_chat.txt +0 -0
  194. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  195. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  196. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  197. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_doc.txt +0 -0
  198. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  199. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  200. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  201. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  202. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  203. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  204. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  205. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
  206. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/sleeptime.txt +0 -0
  207. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
  208. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/pytest.ini +0 -0
  209. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/agent.py +0 -0
  210. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/block.py +0 -0
  211. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/embedding_config.py +0 -0
  212. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/embedding_config_overrides.py +0 -0
  213. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/enums.py +0 -0
  214. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/environment_variables.py +0 -0
  215. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/file.py +0 -0
  216. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/group.py +0 -0
  217. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/health.py +0 -0
  218. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/identity.py +0 -0
  219. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/job.py +0 -0
  220. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/letta_base.py +0 -0
  221. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/letta_message.py +0 -0
  222. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/letta_message_content.py +0 -0
  223. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/letta_request.py +0 -0
  224. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/letta_response.py +0 -0
  225. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/llm_batch_job.py +0 -0
  226. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/llm_config.py +0 -0
  227. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/llm_config_overrides.py +0 -0
  228. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/memory.py +0 -0
  229. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/message.py +0 -0
  230. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/openai/chat_completion_request.py +0 -0
  231. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/openai/chat_completion_response.py +0 -0
  232. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/openai/chat_completions.py +0 -0
  233. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/openai/embedding_response.py +0 -0
  234. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/openai/openai.py +0 -0
  235. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/organization.py +0 -0
  236. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/passage.py +0 -0
  237. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/providers.py +0 -0
  238. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/response_format.py +0 -0
  239. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/run.py +0 -0
  240. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/sandbox_config.py +0 -0
  241. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/source.py +0 -0
  242. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/step.py +0 -0
  243. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/tool.py +0 -0
  244. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/tool_execution_result.py +0 -0
  245. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/tool_rule.py +0 -0
  246. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/usage.py +0 -0
  247. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/schemas/user.py +0 -0
  248. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/__init__.py +0 -0
  249. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  250. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  251. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_base.py +0 -0
  252. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_block.py +0 -0
  253. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  254. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_message.py +0 -0
  255. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  256. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  257. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  258. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/__init__.py +0 -0
  259. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/constants.py +0 -0
  260. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/db.py +0 -0
  261. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/generate_openapi_schema.sh +0 -0
  262. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/__init__.py +0 -0
  263. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/app.py +0 -0
  264. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/auth/__init__.py +0 -0
  265. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/auth/index.py +0 -0
  266. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/auth_token.py +0 -0
  267. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/chat_completions_interface.py +0 -0
  268. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/interface.py +0 -0
  269. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/optimistic_json_parser.py +0 -0
  270. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/__init__.py +0 -0
  271. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  272. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  273. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/agents.py +0 -0
  274. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  275. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/groups.py +0 -0
  276. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/health.py +0 -0
  277. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/identities.py +0 -0
  278. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  279. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/messages.py +0 -0
  280. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  281. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/providers.py +0 -0
  282. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/runs.py +0 -0
  283. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  284. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/steps.py +0 -0
  285. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/tags.py +0 -0
  286. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/users.py +0 -0
  287. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/routers/v1/voice.py +0 -0
  288. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/static_files.py +0 -0
  289. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/rest_api/utils.py +0 -0
  290. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/server.py +0 -0
  291. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/startup.sh +0 -0
  292. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/static_files/assets/index-048c9598.js +0 -0
  293. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  294. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/static_files/favicon.ico +0 -0
  295. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/static_files/index.html +0 -0
  296. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  297. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/utils.py +0 -0
  298. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/ws_api/__init__.py +0 -0
  299. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/ws_api/example_client.py +0 -0
  300. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/ws_api/interface.py +0 -0
  301. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/ws_api/protocol.py +0 -0
  302. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/server/ws_api/server.py +0 -0
  303. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/__init__.py +0 -0
  304. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/agent_manager.py +0 -0
  305. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/block_manager.py +0 -0
  306. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/group_manager.py +0 -0
  307. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/helpers/agent_manager_helper.py +0 -0
  308. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/helpers/tool_execution_helper.py +0 -0
  309. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/identity_manager.py +0 -0
  310. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/job_manager.py +0 -0
  311. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/llm_batch_manager.py +0 -0
  312. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/mcp/__init__.py +0 -0
  313. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/mcp/base_client.py +0 -0
  314. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/mcp/sse_client.py +0 -0
  315. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/mcp/stdio_client.py +0 -0
  316. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/mcp/types.py +0 -0
  317. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/message_manager.py +0 -0
  318. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/organization_manager.py +0 -0
  319. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/per_agent_lock_manager.py +0 -0
  320. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/provider_manager.py +0 -0
  321. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/sandbox_config_manager.py +0 -0
  322. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/source_manager.py +0 -0
  323. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/step_manager.py +0 -0
  324. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/summarizer/__init__.py +0 -0
  325. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/summarizer/enums.py +0 -0
  326. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/summarizer/summarizer.py +0 -0
  327. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_executor/__init__.py +0 -0
  328. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_executor/tool_execution_manager.py +0 -0
  329. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
  330. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_sandbox/__init__.py +0 -0
  331. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_sandbox/base.py +0 -0
  332. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
  333. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/tool_sandbox/local_sandbox.py +0 -0
  334. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/services/user_manager.py +0 -0
  335. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/settings.py +0 -0
  336. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/streaming_interface.py +0 -0
  337. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/streaming_utils.py +0 -0
  338. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/system.py +0 -0
  339. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/tracing.py +0 -0
  340. {letta_nightly-0.7.5.dev20250426104040 → letta_nightly-0.7.5.dev20250428110034}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.7.5.dev20250426104040
3
+ Version: 0.7.5.dev20250428110034
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -57,6 +57,7 @@ class LettaAgent(BaseAgent):
57
57
  self.block_manager = block_manager
58
58
  self.passage_manager = passage_manager
59
59
  self.use_assistant_message = use_assistant_message
60
+ self.response_messages: List[Message] = []
60
61
 
61
62
  @trace_method
62
63
  async def step(self, input_messages: List[MessageCreate], max_steps: int = 10) -> LettaResponse:
@@ -81,6 +82,7 @@ class LettaAgent(BaseAgent):
81
82
 
82
83
  tool_call = response.choices[0].message.tool_calls[0]
83
84
  persisted_messages, should_continue = await self._handle_ai_response(tool_call, agent_state, tool_rules_solver)
85
+ self.response_messages.extend(persisted_messages)
84
86
  new_in_context_messages.extend(persisted_messages)
85
87
 
86
88
  if not should_continue:
@@ -139,6 +141,7 @@ class LettaAgent(BaseAgent):
139
141
  pre_computed_assistant_message_id=interface.letta_assistant_message_id,
140
142
  pre_computed_tool_message_id=interface.letta_tool_message_id,
141
143
  )
144
+ self.response_messages.extend(persisted_messages)
142
145
  new_in_context_messages.extend(persisted_messages)
143
146
 
144
147
  if not should_continue:
@@ -167,7 +170,14 @@ class LettaAgent(BaseAgent):
167
170
  tools = [
168
171
  t
169
172
  for t in agent_state.tools
170
- if t.tool_type in {ToolType.CUSTOM, ToolType.LETTA_CORE, ToolType.LETTA_MEMORY_CORE}
173
+ if t.tool_type
174
+ in {
175
+ ToolType.CUSTOM,
176
+ ToolType.LETTA_CORE,
177
+ ToolType.LETTA_MEMORY_CORE,
178
+ ToolType.LETTA_MULTI_AGENT_CORE,
179
+ ToolType.LETTA_SLEEPTIME_CORE,
180
+ }
171
181
  or (t.tool_type == ToolType.LETTA_MULTI_AGENT_CORE and t.name == "send_message_to_agents_matching_tags")
172
182
  ]
173
183
 
@@ -88,11 +88,14 @@ def load_multi_agent(
88
88
  def stringify_message(message: Message, use_assistant_name: bool = False) -> str | None:
89
89
  assistant_name = message.name or "assistant" if use_assistant_name else "assistant"
90
90
  if message.role == "user":
91
- content = json.loads(message.content[0].text)
92
- if content["type"] == "user_message":
93
- return f"{message.name or 'user'}: {content['message']}"
94
- else:
95
- return None
91
+ try:
92
+ content = json.loads(message.content[0].text)
93
+ if content["type"] == "user_message":
94
+ return f"{message.name or 'user'}: {content['message']}"
95
+ else:
96
+ return None
97
+ except:
98
+ return f"{message.name or 'user'}: {message.content[0].text}"
96
99
  elif message.role == "assistant":
97
100
  messages = []
98
101
  if message.tool_calls:
@@ -107,6 +107,9 @@ class SleeptimeMultiAgent(Agent):
107
107
  run_id: str,
108
108
  ) -> LettaUsageStatistics:
109
109
  try:
110
+ job_update = JobUpdate(status=JobStatus.running)
111
+ self.job_manager.update_job_by_id(job_id=run_id, job_update=job_update, actor=self.user)
112
+
110
113
  participant_agent_state = self.agent_manager.get_agent_by_id(participant_agent_id, actor=self.user)
111
114
  participant_agent = Agent(
112
115
  agent_state=participant_agent_state,
@@ -0,0 +1,249 @@
1
+ import asyncio
2
+ from datetime import datetime, timezone
3
+ from typing import AsyncGenerator, List, Optional
4
+
5
+ from letta.agents.base_agent import BaseAgent
6
+ from letta.agents.letta_agent import LettaAgent
7
+ from letta.groups.helpers import stringify_message
8
+ from letta.schemas.enums import JobStatus
9
+ from letta.schemas.group import Group, ManagerType
10
+ from letta.schemas.job import JobUpdate
11
+ from letta.schemas.letta_message_content import TextContent
12
+ from letta.schemas.letta_response import LettaResponse
13
+ from letta.schemas.message import Message, MessageCreate
14
+ from letta.schemas.run import Run
15
+ from letta.schemas.user import User
16
+ from letta.services.agent_manager import AgentManager
17
+ from letta.services.block_manager import BlockManager
18
+ from letta.services.group_manager import GroupManager
19
+ from letta.services.job_manager import JobManager
20
+ from letta.services.message_manager import MessageManager
21
+ from letta.services.passage_manager import PassageManager
22
+
23
+
24
+ class SleeptimeMultiAgentV2(BaseAgent):
25
+ def __init__(
26
+ self,
27
+ agent_id: str,
28
+ message_manager: MessageManager,
29
+ agent_manager: AgentManager,
30
+ block_manager: BlockManager,
31
+ passage_manager: PassageManager,
32
+ group_manager: GroupManager,
33
+ job_manager: JobManager,
34
+ actor: User,
35
+ group: Optional[Group] = None,
36
+ ):
37
+ super().__init__(
38
+ agent_id=agent_id,
39
+ openai_client=None,
40
+ message_manager=message_manager,
41
+ agent_manager=agent_manager,
42
+ actor=actor,
43
+ )
44
+ self.block_manager = block_manager
45
+ self.passage_manager = passage_manager
46
+ self.group_manager = group_manager
47
+ self.job_manager = job_manager
48
+ # Group settings
49
+ assert group.manager_type == ManagerType.sleeptime, f"Expected group manager type to be 'sleeptime', got {group.manager_type}"
50
+ self.group = group
51
+
52
+ async def step(self, input_messages: List[MessageCreate], max_steps: int = 10) -> LettaResponse:
53
+ run_ids = []
54
+
55
+ # Prepare new messages
56
+ new_messages = []
57
+ for message in input_messages:
58
+ if isinstance(message.content, str):
59
+ message.content = [TextContent(text=message.content)]
60
+ message.group_id = self.group.id
61
+ new_messages.append(message)
62
+
63
+ # Load foreground agent
64
+ foreground_agent = LettaAgent(
65
+ agent_id=self.agent_id,
66
+ message_manager=self.message_manager,
67
+ agent_manager=self.agent_manager,
68
+ block_manager=self.block_manager,
69
+ passage_manager=self.passage_manager,
70
+ actor=self.actor,
71
+ )
72
+ # Perform foreground agent step
73
+ response = await foreground_agent.step(input_messages=new_messages, max_steps=max_steps)
74
+
75
+ # Get last response messages
76
+ last_response_messages = foreground_agent.response_messages
77
+
78
+ # Update turns counter
79
+ if self.group.sleeptime_agent_frequency is not None and self.group.sleeptime_agent_frequency > 0:
80
+ turns_counter = self.group_manager.bump_turns_counter(group_id=self.group.id, actor=self.actor)
81
+
82
+ # Perform participant steps
83
+ if self.group.sleeptime_agent_frequency is None or (
84
+ turns_counter is not None and turns_counter % self.group.sleeptime_agent_frequency == 0
85
+ ):
86
+ last_processed_message_id = self.group_manager.get_last_processed_message_id_and_update(
87
+ group_id=self.group.id, last_processed_message_id=last_response_messages[-1].id, actor=self.actor
88
+ )
89
+ for participant_agent_id in self.group.agent_ids:
90
+ try:
91
+ run_id = await self._issue_background_task(
92
+ participant_agent_id,
93
+ last_response_messages,
94
+ last_processed_message_id,
95
+ )
96
+ run_ids.append(run_id)
97
+
98
+ except Exception as e:
99
+ # Individual task failures
100
+ print(f"Agent processing failed: {str(e)}")
101
+ raise e
102
+
103
+ response.usage.run_ids = run_ids
104
+ return response
105
+
106
+ async def step_stream(self, input_messages: List[MessageCreate], max_steps: int = 10) -> AsyncGenerator[str, None]:
107
+ # Prepare new messages
108
+ new_messages = []
109
+ for message in input_messages:
110
+ if isinstance(message.content, str):
111
+ message.content = [TextContent(text=message.content)]
112
+ message.group_id = self.group.id
113
+ new_messages.append(message)
114
+
115
+ # Load foreground agent
116
+ foreground_agent = LettaAgent(
117
+ agent_id=self.agent_id,
118
+ message_manager=self.message_manager,
119
+ agent_manager=self.agent_manager,
120
+ block_manager=self.block_manager,
121
+ passage_manager=self.passage_manager,
122
+ actor=self.actor,
123
+ )
124
+ # Perform foreground agent step
125
+ async for chunk in foreground_agent.step_stream(input_messages=new_messages, max_steps=max_steps):
126
+ yield chunk
127
+
128
+ # Get response messages
129
+ last_response_messages = foreground_agent.response_messages
130
+
131
+ # Update turns counter
132
+ if self.group.sleeptime_agent_frequency is not None and self.group.sleeptime_agent_frequency > 0:
133
+ turns_counter = self.group_manager.bump_turns_counter(group_id=self.group.id, actor=self.actor)
134
+
135
+ # Perform participant steps
136
+ if self.group.sleeptime_agent_frequency is None or (
137
+ turns_counter is not None and turns_counter % self.group.sleeptime_agent_frequency == 0
138
+ ):
139
+ last_processed_message_id = self.group_manager.get_last_processed_message_id_and_update(
140
+ group_id=self.group.id, last_processed_message_id=last_response_messages[-1].id, actor=self.actor
141
+ )
142
+ for sleeptime_agent_id in self.group.agent_ids:
143
+ self._issue_background_task(
144
+ sleeptime_agent_id,
145
+ last_response_messages,
146
+ last_processed_message_id,
147
+ )
148
+
149
+ async def _issue_background_task(
150
+ self,
151
+ sleeptime_agent_id: str,
152
+ response_messages: List[Message],
153
+ last_processed_message_id: str,
154
+ ) -> str:
155
+ run = Run(
156
+ user_id=self.actor.id,
157
+ status=JobStatus.created,
158
+ metadata={
159
+ "job_type": "sleeptime_agent_send_message_async", # is this right?
160
+ "agent_id": sleeptime_agent_id,
161
+ },
162
+ )
163
+ run = self.job_manager.create_job(pydantic_job=run, actor=self.actor)
164
+
165
+ asyncio.create_task(
166
+ self._participant_agent_step(
167
+ foreground_agent_id=self.agent_id,
168
+ sleeptime_agent_id=sleeptime_agent_id,
169
+ response_messages=response_messages,
170
+ last_processed_message_id=last_processed_message_id,
171
+ run_id=run.id,
172
+ )
173
+ )
174
+ return run.id
175
+
176
+ async def _participant_agent_step(
177
+ self,
178
+ foreground_agent_id: str,
179
+ sleeptime_agent_id: str,
180
+ response_messages: List[Message],
181
+ last_processed_message_id: str,
182
+ run_id: str,
183
+ ) -> str:
184
+ try:
185
+ # Update job status
186
+ job_update = JobUpdate(status=JobStatus.running)
187
+ self.job_manager.update_job_by_id(job_id=run_id, job_update=job_update, actor=self.actor)
188
+
189
+ # Create conversation transcript
190
+ prior_messages = []
191
+ if self.group.sleeptime_agent_frequency:
192
+ try:
193
+ prior_messages = self.message_manager.list_messages_for_agent(
194
+ agent_id=foreground_agent_id,
195
+ actor=self.actor,
196
+ after=last_processed_message_id,
197
+ before=response_messages[0].id,
198
+ )
199
+ except Exception:
200
+ pass # continue with just latest messages
201
+
202
+ transcript_summary = [stringify_message(message) for message in prior_messages + response_messages]
203
+ transcript_summary = [summary for summary in transcript_summary if summary is not None]
204
+ message_text = "\n".join(transcript_summary)
205
+
206
+ sleeptime_agent_messages = [
207
+ MessageCreate(
208
+ role="user",
209
+ content=[TextContent(text=message_text)],
210
+ id=Message.generate_id(),
211
+ agent_id=sleeptime_agent_id,
212
+ group_id=self.group.id,
213
+ )
214
+ ]
215
+
216
+ # Load sleeptime agent
217
+ sleeptime_agent = LettaAgent(
218
+ agent_id=sleeptime_agent_id,
219
+ message_manager=self.message_manager,
220
+ agent_manager=self.agent_manager,
221
+ block_manager=self.block_manager,
222
+ passage_manager=self.passage_manager,
223
+ actor=self.actor,
224
+ )
225
+
226
+ # Perform sleeptime agent step
227
+ result = await sleeptime_agent.step(
228
+ input_messages=sleeptime_agent_messages,
229
+ )
230
+
231
+ # Update job status
232
+ job_update = JobUpdate(
233
+ status=JobStatus.completed,
234
+ completed_at=datetime.now(timezone.utc),
235
+ metadata={
236
+ "result": result.model_dump(mode="json"),
237
+ "agent_id": sleeptime_agent_id,
238
+ },
239
+ )
240
+ self.job_manager.update_job_by_id(job_id=run_id, job_update=job_update, actor=self.actor)
241
+ return result
242
+ except Exception as e:
243
+ job_update = JobUpdate(
244
+ status=JobStatus.failed,
245
+ completed_at=datetime.now(timezone.utc),
246
+ metadata={"error": str(e)},
247
+ )
248
+ self.job_manager.update_job_by_id(job_id=run_id, job_update=job_update, actor=self.actor)
249
+ raise
@@ -1,5 +1,6 @@
1
1
  from letta.server.rest_api.routers.v1.agents import router as agents_router
2
2
  from letta.server.rest_api.routers.v1.blocks import router as blocks_router
3
+ from letta.server.rest_api.routers.v1.embeddings import router as embeddings_router
3
4
  from letta.server.rest_api.routers.v1.groups import router as groups_router
4
5
  from letta.server.rest_api.routers.v1.health import router as health_router
5
6
  from letta.server.rest_api.routers.v1.identities import router as identities_router
@@ -32,4 +33,5 @@ ROUTERS = [
32
33
  tags_router,
33
34
  messages_router,
34
35
  voice_router,
36
+ embeddings_router,
35
37
  ]
@@ -0,0 +1,20 @@
1
+ from typing import Optional
2
+
3
+ from fastapi import APIRouter, Depends, Header
4
+
5
+ from letta.server.rest_api.utils import get_letta_server
6
+ from letta.server.server import SyncServer
7
+
8
+ router = APIRouter(prefix="/embeddings", tags=["embeddings"])
9
+
10
+
11
+ @router.get("/total_storage_size", response_model=float, operation_id="get_total_storage_size")
12
+ def get_embeddings_storage_size(
13
+ server: SyncServer = Depends(get_letta_server),
14
+ actor_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
15
+ ):
16
+ """
17
+ Get the total size of all embeddings in the database for a user in GB.
18
+ """
19
+ actor = server.user_manager.get_user_or_default(user_id=actor_id)
20
+ return server.passage_manager.estimate_embeddings_size_GB(actor=actor)
@@ -13,7 +13,7 @@ router = APIRouter(prefix="/models", tags=["models", "llms"])
13
13
 
14
14
 
15
15
  @router.get("/", response_model=List[LLMConfig], operation_id="list_models")
16
- def list_llm_backends(
16
+ def list_llm_models(
17
17
  server: "SyncServer" = Depends(get_letta_server),
18
18
  ):
19
19
 
@@ -23,7 +23,7 @@ def list_llm_backends(
23
23
 
24
24
 
25
25
  @router.get("/embedding", response_model=List[EmbeddingConfig], operation_id="list_embedding_models")
26
- def list_embedding_backends(
26
+ def list_embedding_models(
27
27
  server: "SyncServer" = Depends(get_letta_server),
28
28
  ):
29
29
 
@@ -20,6 +20,17 @@ from letta.utils import sanitize_filename
20
20
  router = APIRouter(prefix="/sources", tags=["sources"])
21
21
 
22
22
 
23
+ @router.get("/count", response_model=int, operation_id="count_sources")
24
+ def count_sources(
25
+ server: "SyncServer" = Depends(get_letta_server),
26
+ actor_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
27
+ ):
28
+ """
29
+ Count all data sources created by a user.
30
+ """
31
+ return server.source_manager.size(actor=server.user_manager.get_user_or_default(user_id=actor_id))
32
+
33
+
23
34
  @router.get("/{source_id}", response_model=Source, operation_id="retrieve_source")
24
35
  def retrieve_source(
25
36
  source_id: str,
@@ -9,7 +9,7 @@ from composio.exceptions import (
9
9
  EnumMetadataNotFound,
10
10
  EnumStringNotFound,
11
11
  )
12
- from fastapi import APIRouter, Body, Depends, Header, HTTPException
12
+ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query
13
13
 
14
14
  from letta.errors import LettaToolCreateError
15
15
  from letta.functions.mcp_client.exceptions import MCPTimeoutError
@@ -40,6 +40,24 @@ def delete_tool(
40
40
  server.tool_manager.delete_tool_by_id(tool_id=tool_id, actor=actor)
41
41
 
42
42
 
43
+ @router.get("/count", response_model=int, operation_id="count_tools")
44
+ def count_tools(
45
+ server: SyncServer = Depends(get_letta_server),
46
+ actor_id: Optional[str] = Header(None, alias="user_id"),
47
+ include_base_tools: Optional[bool] = Query(False, description="Include built-in Letta tools in the count"),
48
+ ):
49
+ """
50
+ Get a count of all tools available to agents belonging to the org of the user.
51
+ """
52
+ try:
53
+ return server.tool_manager.size(
54
+ actor=server.user_manager.get_user_or_default(user_id=actor_id), include_base_tools=include_base_tools
55
+ )
56
+ except Exception as e:
57
+ print(f"Error occurred: {e}")
58
+ raise HTTPException(status_code=500, detail=str(e))
59
+
60
+
43
61
  @router.get("/{tool_id}", response_model=Tool, operation_id="retrieve_tool")
44
62
  def retrieve_tool(
45
63
  tool_id: str,
@@ -3,6 +3,7 @@ from typing import List, Optional
3
3
 
4
4
  from openai import OpenAI
5
5
 
6
+ from letta.constants import MAX_EMBEDDING_DIM
6
7
  from letta.embeddings import embedding_model, parse_and_chunk_text
7
8
  from letta.orm.errors import NoResultFound
8
9
  from letta.orm.passage import AgentPassage, SourcePassage
@@ -218,3 +219,16 @@ class PassageManager:
218
219
  """
219
220
  with self.session_maker() as session:
220
221
  return AgentPassage.size(db_session=session, actor=actor, agent_id=agent_id)
222
+
223
+ def estimate_embeddings_size_GB(
224
+ self,
225
+ actor: PydanticUser,
226
+ agent_id: Optional[str] = None,
227
+ ) -> float:
228
+ """
229
+ Estimate the size of the embeddings in GB.
230
+ """
231
+ BYTES_PER_EMBEDDING_DIM = 4
232
+ BYTES_PER_GB = 1024 * 1024 * 1024
233
+ GB_PER_EMBEDDING = BYTES_PER_EMBEDDING_DIM / BYTES_PER_GB * MAX_EMBEDDING_DIM
234
+ return self.size(actor=actor, agent_id=agent_id) * GB_PER_EMBEDDING
@@ -192,7 +192,7 @@ class LettaCoreToolExecutor(ToolExecutor):
192
192
  AgentManager().rebuild_system_prompt(agent_id=agent_state.id, actor=actor, force=True)
193
193
  return None
194
194
 
195
- def core_memory_append(self, agent_state: "AgentState", actor: User, label: str, content: str) -> Optional[str]:
195
+ def core_memory_append(self, agent_state: AgentState, actor: User, label: str, content: str) -> Optional[str]:
196
196
  """
197
197
  Append to the contents of core memory.
198
198
 
@@ -211,7 +211,7 @@ class LettaCoreToolExecutor(ToolExecutor):
211
211
 
212
212
  def core_memory_replace(
213
213
  self,
214
- agent_state: "AgentState",
214
+ agent_state: AgentState,
215
215
  actor: User,
216
216
  label: str,
217
217
  old_content: str,
@@ -237,7 +237,8 @@ class LettaCoreToolExecutor(ToolExecutor):
237
237
  return None
238
238
 
239
239
  def memory_replace(
240
- agent_state: "AgentState",
240
+ self,
241
+ agent_state: AgentState,
241
242
  actor: User,
242
243
  label: str,
243
244
  old_str: str,
@@ -326,7 +327,8 @@ class LettaCoreToolExecutor(ToolExecutor):
326
327
  return success_msg
327
328
 
328
329
  def memory_insert(
329
- agent_state: "AgentState",
330
+ self,
331
+ agent_state: AgentState,
330
332
  actor: User,
331
333
  label: str,
332
334
  new_str: str,
@@ -407,7 +409,7 @@ class LettaCoreToolExecutor(ToolExecutor):
407
409
 
408
410
  return success_msg
409
411
 
410
- def memory_rethink(agent_state: "AgentState", actor: User, label: str, new_memory: str) -> str:
412
+ def memory_rethink(self, agent_state: AgentState, actor: User, label: str, new_memory: str) -> str:
411
413
  """
412
414
  The memory_rethink command allows you to completely rewrite the contents of a
413
415
  memory block. Use this tool to make large sweeping changes (e.g. when you want
@@ -458,7 +460,7 @@ class LettaCoreToolExecutor(ToolExecutor):
458
460
  # return None
459
461
  return success_msg
460
462
 
461
- def memory_finish_edits(agent_state: "AgentState") -> None:
463
+ def memory_finish_edits(self, agent_state: AgentState, actor: User) -> None:
462
464
  """
463
465
  Call the memory_finish_edits command when you are finished making edits
464
466
  (integrating all new information) into the memory blocks. This function
@@ -29,14 +29,6 @@ logger = get_logger(__name__)
29
29
  class ToolManager:
30
30
  """Manager class to handle business logic related to Tools."""
31
31
 
32
- BASE_TOOL_NAMES = [
33
- "send_message",
34
- "conversation_search",
35
- "archival_memory_insert",
36
- "archival_memory_search",
37
- ]
38
- BASE_MEMORY_TOOL_NAMES = ["core_memory_append", "core_memory_replace"]
39
-
40
32
  def __init__(self):
41
33
  # Fetching the db_context similarly as in OrganizationManager
42
34
  from letta.server.db import db_context
@@ -149,12 +141,17 @@ class ToolManager:
149
141
  def size(
150
142
  self,
151
143
  actor: PydanticUser,
144
+ include_base_tools: bool,
152
145
  ) -> int:
153
146
  """
154
147
  Get the total count of tools for the given user.
148
+
149
+ If include_builtin is True, it will also count the built-in tools.
155
150
  """
156
151
  with self.session_maker() as session:
157
- return ToolModel.size(db_session=session, actor=actor)
152
+ if include_base_tools:
153
+ return ToolModel.size(db_session=session, actor=actor)
154
+ return ToolModel.size(db_session=session, actor=actor, name=LETTA_TOOL_SET)
158
155
 
159
156
  @enforce_types
160
157
  def update_tool_by_id(self, tool_id: str, tool_update: ToolUpdate, actor: PydanticUser) -> PydanticTool:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "letta-nightly"
3
- version = "0.7.5.dev20250426104040"
3
+ version = "0.7.5.dev20250428110034"
4
4
  packages = [
5
5
  {include = "letta"},
6
6
  ]