letta-nightly 0.6.40.dev20250314173529__tar.gz → 0.6.41.dev20250314233053__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.

Potentially problematic release.


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

Files changed (301) hide show
  1. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/PKG-INFO +1 -1
  2. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/__init__.py +1 -1
  3. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/agent.py +1 -1
  4. letta_nightly-0.6.41.dev20250314233053/letta/functions/mcp_client/base_client.py +61 -0
  5. letta_nightly-0.6.41.dev20250314233053/letta/functions/mcp_client/sse_client.py +21 -0
  6. letta_nightly-0.6.41.dev20250314233053/letta/functions/mcp_client/stdio_client.py +103 -0
  7. letta_nightly-0.6.41.dev20250314233053/letta/functions/mcp_client/types.py +48 -0
  8. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/schema_generator.py +1 -1
  9. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/tool.py +1 -1
  10. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/tools.py +1 -1
  11. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/server.py +8 -13
  12. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/startup.sh +20 -0
  13. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/agent_manager.py +0 -3
  14. letta_nightly-0.6.41.dev20250314233053/letta/services/summarizer/__init__.py +0 -0
  15. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/settings.py +1 -0
  16. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/tracing.py +1 -1
  17. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/pyproject.toml +1 -1
  18. letta_nightly-0.6.40.dev20250314173529/letta/helpers/mcp_helpers.py +0 -129
  19. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/LICENSE +0 -0
  20. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/README.md +0 -0
  21. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/__main__.py +0 -0
  22. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/agents/__init__.py +0 -0
  23. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/agents/base_agent.py +0 -0
  24. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/agents/ephemeral_agent.py +0 -0
  25. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/agents/low_latency_agent.py +0 -0
  26. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/benchmark/benchmark.py +0 -0
  27. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/benchmark/constants.py +0 -0
  28. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/cli/cli.py +0 -0
  29. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/cli/cli_config.py +0 -0
  30. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/cli/cli_load.py +0 -0
  31. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/client/__init__.py +0 -0
  32. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/client/client.py +0 -0
  33. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/client/streaming.py +0 -0
  34. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/client/utils.py +0 -0
  35. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/config.py +0 -0
  36. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/constants.py +0 -0
  37. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/data_sources/connectors.py +0 -0
  38. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/data_sources/connectors_helper.py +0 -0
  39. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/dynamic_multi_agent.py +0 -0
  40. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/embeddings.py +0 -0
  41. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/errors.py +0 -0
  42. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/__init__.py +0 -0
  43. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/ast_parsers.py +0 -0
  44. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/function_sets/base.py +0 -0
  45. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/function_sets/extras.py +0 -0
  46. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/function_sets/multi_agent.py +0 -0
  47. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/functions.py +0 -0
  48. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/helpers.py +0 -0
  49. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/functions/interface.py +0 -0
  50. {letta_nightly-0.6.40.dev20250314173529/letta/humans → letta_nightly-0.6.41.dev20250314233053/letta/functions/mcp_client}/__init__.py +0 -0
  51. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/__init__.py +0 -0
  52. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/composio_helpers.py +0 -0
  53. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/converters.py +0 -0
  54. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/datetime_helpers.py +0 -0
  55. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/json_helpers.py +0 -0
  56. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/tool_execution_helper.py +0 -0
  57. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/helpers/tool_rule_solver.py +0 -0
  58. {letta_nightly-0.6.40.dev20250314173529/letta/interfaces → letta_nightly-0.6.41.dev20250314233053/letta/humans}/__init__.py +0 -0
  59. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/humans/examples/basic.txt +0 -0
  60. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/humans/examples/cs_phd.txt +0 -0
  61. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/interface.py +0 -0
  62. {letta_nightly-0.6.40.dev20250314173529/letta/llm_api → letta_nightly-0.6.41.dev20250314233053/letta/interfaces}/__init__.py +0 -0
  63. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  64. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/interfaces/utils.py +0 -0
  65. {letta_nightly-0.6.40.dev20250314173529/letta/local_llm → letta_nightly-0.6.41.dev20250314233053/letta/llm_api}/__init__.py +0 -0
  66. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/anthropic.py +0 -0
  67. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/aws_bedrock.py +0 -0
  68. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/azure_openai.py +0 -0
  69. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/azure_openai_constants.py +0 -0
  70. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/cohere.py +0 -0
  71. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/deepseek.py +0 -0
  72. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/google_ai.py +0 -0
  73. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/google_ai_client.py +0 -0
  74. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/google_constants.py +0 -0
  75. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/google_vertex.py +0 -0
  76. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/google_vertex_client.py +0 -0
  77. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/helpers.py +0 -0
  78. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/llm_api_tools.py +0 -0
  79. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/llm_client.py +0 -0
  80. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/llm_client_base.py +0 -0
  81. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/mistral.py +0 -0
  82. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/llm_api/openai.py +0 -0
  83. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/README.md +0 -0
  84. {letta_nightly-0.6.40.dev20250314173529/letta/local_llm/grammars → letta_nightly-0.6.41.dev20250314233053/letta/local_llm}/__init__.py +0 -0
  85. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/chat_completion_proxy.py +0 -0
  86. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/constants.py +0 -0
  87. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/function_parser.py +0 -0
  88. {letta_nightly-0.6.40.dev20250314173529/letta/local_llm/llm_chat_completion_wrappers → letta_nightly-0.6.41.dev20250314233053/letta/local_llm/grammars}/__init__.py +0 -0
  89. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  90. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/grammars/json.gbnf +0 -0
  91. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  92. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/json_parser.py +0 -0
  93. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/koboldcpp/api.py +0 -0
  94. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/koboldcpp/settings.py +0 -0
  95. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llamacpp/api.py +0 -0
  96. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llamacpp/settings.py +0 -0
  97. {letta_nightly-0.6.40.dev20250314173529/letta/local_llm/settings → letta_nightly-0.6.41.dev20250314233053/letta/local_llm/llm_chat_completion_wrappers}/__init__.py +0 -0
  98. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  99. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  100. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  101. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  102. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  103. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  104. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  105. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  106. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/lmstudio/api.py +0 -0
  107. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/lmstudio/settings.py +0 -0
  108. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/ollama/api.py +0 -0
  109. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/ollama/settings.py +0 -0
  110. {letta_nightly-0.6.40.dev20250314173529/letta/openai_backcompat → letta_nightly-0.6.41.dev20250314233053/letta/local_llm/settings}/__init__.py +0 -0
  111. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  112. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/settings/settings.py +0 -0
  113. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/settings/simple.py +0 -0
  114. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/utils.py +0 -0
  115. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/vllm/api.py +0 -0
  116. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/webui/api.py +0 -0
  117. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/webui/legacy_api.py +0 -0
  118. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/webui/legacy_settings.py +0 -0
  119. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/local_llm/webui/settings.py +0 -0
  120. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/log.py +0 -0
  121. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/main.py +0 -0
  122. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/memory.py +0 -0
  123. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/offline_memory_agent.py +0 -0
  124. {letta_nightly-0.6.40.dev20250314173529/letta/personas → letta_nightly-0.6.41.dev20250314233053/letta/openai_backcompat}/__init__.py +0 -0
  125. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/openai_backcompat/openai_object.py +0 -0
  126. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/__all__.py +0 -0
  127. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/__init__.py +0 -0
  128. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/agent.py +0 -0
  129. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/agents_tags.py +0 -0
  130. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/base.py +0 -0
  131. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/block.py +0 -0
  132. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/blocks_agents.py +0 -0
  133. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/custom_columns.py +0 -0
  134. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/enums.py +0 -0
  135. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/errors.py +0 -0
  136. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/file.py +0 -0
  137. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/group.py +0 -0
  138. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/groups_agents.py +0 -0
  139. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/identities_agents.py +0 -0
  140. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/identities_blocks.py +0 -0
  141. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/identity.py +0 -0
  142. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/job.py +0 -0
  143. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/job_messages.py +0 -0
  144. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/message.py +0 -0
  145. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/mixins.py +0 -0
  146. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/organization.py +0 -0
  147. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/passage.py +0 -0
  148. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/provider.py +0 -0
  149. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/sandbox_config.py +0 -0
  150. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/source.py +0 -0
  151. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/sources_agents.py +0 -0
  152. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/sqlalchemy_base.py +0 -0
  153. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/sqlite_functions.py +0 -0
  154. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/step.py +0 -0
  155. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/tool.py +0 -0
  156. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/tools_agents.py +0 -0
  157. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/orm/user.py +0 -0
  158. {letta_nightly-0.6.40.dev20250314173529/letta/prompts → letta_nightly-0.6.41.dev20250314233053/letta/personas}/__init__.py +0 -0
  159. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/anna_pa.txt +0 -0
  160. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/google_search_persona.txt +0 -0
  161. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/memgpt_doc.txt +0 -0
  162. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/memgpt_starter.txt +0 -0
  163. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/o1_persona.txt +0 -0
  164. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/offline_memory_persona.txt +0 -0
  165. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/sam.txt +0 -0
  166. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/sam_pov.txt +0 -0
  167. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  168. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/personas/examples/sqldb/test.db +0 -0
  169. {letta_nightly-0.6.40.dev20250314173529/letta/server → letta_nightly-0.6.41.dev20250314233053/letta/prompts}/__init__.py +0 -0
  170. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/gpt_summarize.py +0 -0
  171. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/gpt_system.py +0 -0
  172. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_base.txt +0 -0
  173. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_chat.txt +0 -0
  174. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  175. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  176. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  177. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_doc.txt +0 -0
  178. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  179. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  180. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  181. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  182. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  183. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  184. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  185. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/pytest.ini +0 -0
  186. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/round_robin_multi_agent.py +0 -0
  187. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/agent.py +0 -0
  188. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/block.py +0 -0
  189. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/embedding_config.py +0 -0
  190. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/embedding_config_overrides.py +0 -0
  191. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/enums.py +0 -0
  192. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/environment_variables.py +0 -0
  193. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/file.py +0 -0
  194. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/group.py +0 -0
  195. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/health.py +0 -0
  196. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/identity.py +0 -0
  197. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/job.py +0 -0
  198. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/letta_base.py +0 -0
  199. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/letta_message.py +0 -0
  200. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/letta_message_content.py +0 -0
  201. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/letta_request.py +0 -0
  202. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/letta_response.py +0 -0
  203. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/llm_config.py +0 -0
  204. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/llm_config_overrides.py +0 -0
  205. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/memory.py +0 -0
  206. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/message.py +0 -0
  207. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/openai/chat_completion_request.py +0 -0
  208. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/openai/chat_completion_response.py +0 -0
  209. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/openai/chat_completions.py +0 -0
  210. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/openai/embedding_response.py +0 -0
  211. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/openai/openai.py +0 -0
  212. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/organization.py +0 -0
  213. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/passage.py +0 -0
  214. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/providers.py +0 -0
  215. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/run.py +0 -0
  216. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/sandbox_config.py +0 -0
  217. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/source.py +0 -0
  218. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/step.py +0 -0
  219. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/tool_rule.py +0 -0
  220. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/usage.py +0 -0
  221. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/schemas/user.py +0 -0
  222. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/__init__.py +0 -0
  223. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  224. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  225. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_base.py +0 -0
  226. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_block.py +0 -0
  227. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  228. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_message.py +0 -0
  229. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  230. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  231. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  232. {letta_nightly-0.6.40.dev20250314173529/letta/server/rest_api → letta_nightly-0.6.41.dev20250314233053/letta/server}/__init__.py +0 -0
  233. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/constants.py +0 -0
  234. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/db.py +0 -0
  235. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/generate_openapi_schema.sh +0 -0
  236. {letta_nightly-0.6.40.dev20250314173529/letta/server/rest_api/auth → letta_nightly-0.6.41.dev20250314233053/letta/server/rest_api}/__init__.py +0 -0
  237. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/app.py +0 -0
  238. {letta_nightly-0.6.40.dev20250314173529/letta/server/rest_api/routers → letta_nightly-0.6.41.dev20250314233053/letta/server/rest_api/auth}/__init__.py +0 -0
  239. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/auth/index.py +0 -0
  240. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/auth_token.py +0 -0
  241. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/chat_completions_interface.py +0 -0
  242. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/interface.py +0 -0
  243. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/optimistic_json_parser.py +0 -0
  244. {letta_nightly-0.6.40.dev20250314173529/letta/server/rest_api/routers/openai/chat_completions → letta_nightly-0.6.41.dev20250314233053/letta/server/rest_api/routers}/__init__.py +0 -0
  245. {letta_nightly-0.6.40.dev20250314173529/letta/server/ws_api → letta_nightly-0.6.41.dev20250314233053/letta/server/rest_api/routers/openai/chat_completions}/__init__.py +0 -0
  246. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  247. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  248. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/agents.py +0 -0
  249. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  250. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/groups.py +0 -0
  251. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/health.py +0 -0
  252. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/identities.py +0 -0
  253. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  254. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/llms.py +0 -0
  255. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  256. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/providers.py +0 -0
  257. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/runs.py +0 -0
  258. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  259. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/sources.py +0 -0
  260. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/steps.py +0 -0
  261. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/tags.py +0 -0
  262. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/users.py +0 -0
  263. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/routers/v1/voice.py +0 -0
  264. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/static_files.py +0 -0
  265. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/rest_api/utils.py +0 -0
  266. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/static_files/assets/index-048c9598.js +0 -0
  267. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  268. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/static_files/favicon.ico +0 -0
  269. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/static_files/index.html +0 -0
  270. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  271. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/utils.py +0 -0
  272. {letta_nightly-0.6.40.dev20250314173529/letta/services → letta_nightly-0.6.41.dev20250314233053/letta/server/ws_api}/__init__.py +0 -0
  273. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/ws_api/example_client.py +0 -0
  274. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/ws_api/interface.py +0 -0
  275. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/ws_api/protocol.py +0 -0
  276. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/server/ws_api/server.py +0 -0
  277. {letta_nightly-0.6.40.dev20250314173529/letta/services/summarizer → letta_nightly-0.6.41.dev20250314233053/letta/services}/__init__.py +0 -0
  278. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/block_manager.py +0 -0
  279. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/group_manager.py +0 -0
  280. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/helpers/agent_manager_helper.py +0 -0
  281. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/helpers/tool_execution_helper.py +0 -0
  282. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/identity_manager.py +0 -0
  283. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/job_manager.py +0 -0
  284. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/message_manager.py +0 -0
  285. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/organization_manager.py +0 -0
  286. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/passage_manager.py +0 -0
  287. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/per_agent_lock_manager.py +0 -0
  288. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/provider_manager.py +0 -0
  289. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/sandbox_config_manager.py +0 -0
  290. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/source_manager.py +0 -0
  291. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/step_manager.py +0 -0
  292. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/summarizer/enums.py +0 -0
  293. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/summarizer/summarizer.py +0 -0
  294. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/tool_execution_sandbox.py +0 -0
  295. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/tool_manager.py +0 -0
  296. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/services/user_manager.py +0 -0
  297. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/streaming_interface.py +0 -0
  298. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/streaming_utils.py +0 -0
  299. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/supervisor_multi_agent.py +0 -0
  300. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/system.py +0 -0
  301. {letta_nightly-0.6.40.dev20250314173529 → letta_nightly-0.6.41.dev20250314233053}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.40.dev20250314173529
3
+ Version: 0.6.41.dev20250314233053
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -1,4 +1,4 @@
1
- __version__ = "0.6.39"
1
+ __version__ = "0.6.41"
2
2
 
3
3
  # import clients
4
4
  from letta.client.client import LocalClient, RESTClient, create_client
@@ -22,11 +22,11 @@ from letta.errors import ContextWindowExceededError
22
22
  from letta.functions.ast_parsers import coerce_dict_args_by_annotations, get_function_annotations_from_source
23
23
  from letta.functions.functions import get_function_from_module
24
24
  from letta.functions.helpers import execute_composio_action, generate_composio_action_from_func_name
25
+ from letta.functions.mcp_client.base_client import BaseMCPClient
25
26
  from letta.helpers import ToolRulesSolver
26
27
  from letta.helpers.composio_helpers import get_composio_api_key
27
28
  from letta.helpers.datetime_helpers import get_utc_time
28
29
  from letta.helpers.json_helpers import json_dumps, json_loads
29
- from letta.helpers.mcp_helpers import BaseMCPClient
30
30
  from letta.interface import AgentInterface
31
31
  from letta.llm_api.helpers import calculate_summarizer_cutoff, get_token_counts_for_messages, is_context_overflow_error
32
32
  from letta.llm_api.llm_api_tools import create
@@ -0,0 +1,61 @@
1
+ import asyncio
2
+ from typing import List, Optional, Tuple
3
+
4
+ from mcp import ClientSession, Tool
5
+
6
+ from letta.functions.mcp_client.types import BaseServerConfig
7
+ from letta.log import get_logger
8
+
9
+ logger = get_logger(__name__)
10
+
11
+
12
+ class BaseMCPClient:
13
+ def __init__(self):
14
+ self.session: Optional[ClientSession] = None
15
+ self.stdio = None
16
+ self.write = None
17
+ self.initialized = False
18
+ self.loop = asyncio.new_event_loop()
19
+ self.cleanup_funcs = []
20
+
21
+ def connect_to_server(self, server_config: BaseServerConfig):
22
+ asyncio.set_event_loop(self.loop)
23
+ success = self._initialize_connection(server_config)
24
+
25
+ if success:
26
+ self.loop.run_until_complete(self.session.initialize())
27
+ self.initialized = True
28
+ else:
29
+ raise RuntimeError(
30
+ f"Connecting to MCP server failed. Please review your server config: {server_config.model_dump_json(indent=4)}"
31
+ )
32
+
33
+ def _initialize_connection(self, server_config: BaseServerConfig) -> bool:
34
+ raise NotImplementedError("Subclasses must implement _initialize_connection")
35
+
36
+ def list_tools(self) -> List[Tool]:
37
+ self._check_initialized()
38
+ response = self.loop.run_until_complete(self.session.list_tools())
39
+ return response.tools
40
+
41
+ def execute_tool(self, tool_name: str, tool_args: dict) -> Tuple[str, bool]:
42
+ self._check_initialized()
43
+ result = self.loop.run_until_complete(self.session.call_tool(tool_name, tool_args))
44
+ return str(result.content), result.isError
45
+
46
+ def _check_initialized(self):
47
+ if not self.initialized:
48
+ logger.error("MCPClient has not been initialized")
49
+ raise RuntimeError("MCPClient has not been initialized")
50
+
51
+ def cleanup(self):
52
+ try:
53
+ for cleanup_func in self.cleanup_funcs:
54
+ cleanup_func()
55
+ self.initialized = False
56
+ if not self.loop.is_closed():
57
+ self.loop.close()
58
+ except Exception as e:
59
+ logger.warning(e)
60
+ finally:
61
+ logger.info("Cleaned up MCP clients on shutdown.")
@@ -0,0 +1,21 @@
1
+ from mcp import ClientSession
2
+ from mcp.client.sse import sse_client
3
+
4
+ from letta.functions.mcp_client.base_client import BaseMCPClient
5
+ from letta.functions.mcp_client.types import SSEServerConfig
6
+
7
+ # see: https://modelcontextprotocol.io/quickstart/user
8
+ MCP_CONFIG_TOPLEVEL_KEY = "mcpServers"
9
+
10
+
11
+ class SSEMCPClient(BaseMCPClient):
12
+ def _initialize_connection(self, server_config: SSEServerConfig) -> bool:
13
+ sse_cm = sse_client(url=server_config.server_url)
14
+ sse_transport = self.loop.run_until_complete(sse_cm.__aenter__())
15
+ self.stdio, self.write = sse_transport
16
+ self.cleanup_funcs.append(lambda: self.loop.run_until_complete(sse_cm.__aexit__(None, None, None)))
17
+
18
+ session_cm = ClientSession(self.stdio, self.write)
19
+ self.session = self.loop.run_until_complete(session_cm.__aenter__())
20
+ self.cleanup_funcs.append(lambda: self.loop.run_until_complete(session_cm.__aexit__(None, None, None)))
21
+ return True
@@ -0,0 +1,103 @@
1
+ import sys
2
+ from contextlib import asynccontextmanager
3
+
4
+ import anyio
5
+ import anyio.lowlevel
6
+ import mcp.types as types
7
+ from anyio.streams.text import TextReceiveStream
8
+ from mcp import ClientSession, StdioServerParameters
9
+ from mcp.client.stdio import get_default_environment
10
+
11
+ from letta.functions.mcp_client.base_client import BaseMCPClient
12
+ from letta.functions.mcp_client.types import StdioServerConfig
13
+ from letta.log import get_logger
14
+
15
+ logger = get_logger(__name__)
16
+
17
+
18
+ class StdioMCPClient(BaseMCPClient):
19
+ def _initialize_connection(self, server_config: StdioServerConfig) -> bool:
20
+ try:
21
+ server_params = StdioServerParameters(command=server_config.command, args=server_config.args)
22
+ stdio_cm = forked_stdio_client(server_params)
23
+ stdio_transport = self.loop.run_until_complete(stdio_cm.__aenter__())
24
+ self.stdio, self.write = stdio_transport
25
+ self.cleanup_funcs.append(lambda: self.loop.run_until_complete(stdio_cm.__aexit__(None, None, None)))
26
+
27
+ session_cm = ClientSession(self.stdio, self.write)
28
+ self.session = self.loop.run_until_complete(session_cm.__aenter__())
29
+ self.cleanup_funcs.append(lambda: self.loop.run_until_complete(session_cm.__aexit__(None, None, None)))
30
+ return True
31
+ except Exception:
32
+ return False
33
+
34
+
35
+ @asynccontextmanager
36
+ async def forked_stdio_client(server: StdioServerParameters):
37
+ """
38
+ Client transport for stdio: this will connect to a server by spawning a
39
+ process and communicating with it over stdin/stdout.
40
+ """
41
+ read_stream_writer, read_stream = anyio.create_memory_object_stream(0)
42
+ write_stream, write_stream_reader = anyio.create_memory_object_stream(0)
43
+
44
+ try:
45
+ process = await anyio.open_process(
46
+ [server.command, *server.args],
47
+ env=server.env or get_default_environment(),
48
+ stderr=sys.stderr, # Consider logging stderr somewhere instead of silencing it
49
+ )
50
+ except OSError as exc:
51
+ raise RuntimeError(f"Failed to spawn process: {server.command} {server.args}") from exc
52
+
53
+ async def stdout_reader():
54
+ assert process.stdout, "Opened process is missing stdout"
55
+ buffer = ""
56
+ try:
57
+ async with read_stream_writer:
58
+ async for chunk in TextReceiveStream(
59
+ process.stdout,
60
+ encoding=server.encoding,
61
+ errors=server.encoding_error_handler,
62
+ ):
63
+ lines = (buffer + chunk).split("\n")
64
+ buffer = lines.pop()
65
+ for line in lines:
66
+ try:
67
+ message = types.JSONRPCMessage.model_validate_json(line)
68
+ except Exception as exc:
69
+ await read_stream_writer.send(exc)
70
+ continue
71
+ await read_stream_writer.send(message)
72
+ except anyio.ClosedResourceError:
73
+ await anyio.lowlevel.checkpoint()
74
+
75
+ async def stdin_writer():
76
+ assert process.stdin, "Opened process is missing stdin"
77
+ try:
78
+ async with write_stream_reader:
79
+ async for message in write_stream_reader:
80
+ json = message.model_dump_json(by_alias=True, exclude_none=True)
81
+ await process.stdin.send(
82
+ (json + "\n").encode(
83
+ encoding=server.encoding,
84
+ errors=server.encoding_error_handler,
85
+ )
86
+ )
87
+ except anyio.ClosedResourceError:
88
+ await anyio.lowlevel.checkpoint()
89
+
90
+ async def watch_process_exit():
91
+ returncode = await process.wait()
92
+ if returncode != 0:
93
+ raise RuntimeError(f"Subprocess exited with code {returncode}. Command: {server.command} {server.args}")
94
+
95
+ async with anyio.create_task_group() as tg, process:
96
+ tg.start_soon(stdout_reader)
97
+ tg.start_soon(stdin_writer)
98
+ tg.start_soon(watch_process_exit)
99
+
100
+ with anyio.move_on_after(0.2):
101
+ await anyio.sleep_forever()
102
+
103
+ yield read_stream, write_stream
@@ -0,0 +1,48 @@
1
+ from enum import Enum
2
+ from typing import List, Optional
3
+
4
+ from mcp import Tool
5
+ from pydantic import BaseModel, Field
6
+
7
+
8
+ class MCPTool(Tool):
9
+ """A simple wrapper around MCP's tool definition (to avoid conflict with our own)"""
10
+
11
+
12
+ class MCPServerType(str, Enum):
13
+ SSE = "sse"
14
+ STDIO = "stdio"
15
+
16
+
17
+ class BaseServerConfig(BaseModel):
18
+ server_name: str = Field(..., description="The name of the server")
19
+ type: MCPServerType
20
+
21
+
22
+ class SSEServerConfig(BaseServerConfig):
23
+ type: MCPServerType = MCPServerType.SSE
24
+ server_url: str = Field(..., description="The URL of the server (MCP SSE client will connect to this URL)")
25
+
26
+ def to_dict(self) -> dict:
27
+ values = {
28
+ "transport": "sse",
29
+ "url": self.server_url,
30
+ }
31
+ return values
32
+
33
+
34
+ class StdioServerConfig(BaseServerConfig):
35
+ type: MCPServerType = MCPServerType.STDIO
36
+ command: str = Field(..., description="The command to run (MCP 'local' client will run this command)")
37
+ args: List[str] = Field(..., description="The arguments to pass to the command")
38
+ env: Optional[dict[str, str]] = Field(None, description="Environment variables to set")
39
+
40
+ def to_dict(self) -> dict:
41
+ values = {
42
+ "transport": "stdio",
43
+ "command": self.command,
44
+ "args": self.args,
45
+ }
46
+ if self.env is not None:
47
+ values["env"] = self.env
48
+ return values
@@ -6,7 +6,7 @@ from composio.client.collections import ActionParametersModel
6
6
  from docstring_parser import parse
7
7
  from pydantic import BaseModel
8
8
 
9
- from letta.helpers.mcp_helpers import MCPTool
9
+ from letta.functions.mcp_client.types import MCPTool
10
10
 
11
11
 
12
12
  def is_optional(annotation):
@@ -17,12 +17,12 @@ from letta.functions.helpers import (
17
17
  generate_mcp_tool_wrapper,
18
18
  generate_model_from_args_json_schema,
19
19
  )
20
+ from letta.functions.mcp_client.types import MCPTool
20
21
  from letta.functions.schema_generator import (
21
22
  generate_schema_from_args_schema_v2,
22
23
  generate_tool_schema_for_composio,
23
24
  generate_tool_schema_for_mcp,
24
25
  )
25
- from letta.helpers.mcp_helpers import MCPTool
26
26
  from letta.log import get_logger
27
27
  from letta.orm.enums import ToolType
28
28
  from letta.schemas.letta_base import LettaBase
@@ -12,8 +12,8 @@ from composio.exceptions import (
12
12
  from fastapi import APIRouter, Body, Depends, Header, HTTPException
13
13
 
14
14
  from letta.errors import LettaToolCreateError
15
+ from letta.functions.mcp_client.types import MCPTool, SSEServerConfig, StdioServerConfig
15
16
  from letta.helpers.composio_helpers import get_composio_api_key
16
- from letta.helpers.mcp_helpers import MCPTool, SSEServerConfig, StdioServerConfig
17
17
  from letta.log import get_logger
18
18
  from letta.orm.errors import UniqueConstraintViolationError
19
19
  from letta.schemas.letta_message import ToolReturnMessage
@@ -20,18 +20,12 @@ from letta.agent import Agent, save_agent
20
20
  from letta.config import LettaConfig
21
21
  from letta.data_sources.connectors import DataConnector, load_data
22
22
  from letta.dynamic_multi_agent import DynamicMultiAgent
23
+ from letta.functions.mcp_client.base_client import BaseMCPClient
24
+ from letta.functions.mcp_client.sse_client import MCP_CONFIG_TOPLEVEL_KEY, SSEMCPClient
25
+ from letta.functions.mcp_client.stdio_client import StdioMCPClient
26
+ from letta.functions.mcp_client.types import MCPServerType, MCPTool, SSEServerConfig, StdioServerConfig
23
27
  from letta.helpers.datetime_helpers import get_utc_time
24
28
  from letta.helpers.json_helpers import json_dumps, json_loads
25
- from letta.helpers.mcp_helpers import (
26
- MCP_CONFIG_TOPLEVEL_KEY,
27
- BaseMCPClient,
28
- MCPServerType,
29
- MCPTool,
30
- SSEMCPClient,
31
- SSEServerConfig,
32
- StdioMCPClient,
33
- StdioServerConfig,
34
- )
35
29
 
36
30
  # TODO use custom interface
37
31
  from letta.interface import AgentInterface # abstract
@@ -343,11 +337,12 @@ class SyncServer(Server):
343
337
  self.mcp_clients[server_name] = StdioMCPClient()
344
338
  else:
345
339
  raise ValueError(f"Invalid MCP server config: {server_config}")
340
+
346
341
  try:
347
342
  self.mcp_clients[server_name].connect_to_server(server_config)
348
- except:
349
- logger.exception(f"Failed to connect to MCP server: {server_name}")
350
- raise
343
+ except Exception as e:
344
+ logger.error(e)
345
+ self.mcp_clients.pop(server_name)
351
346
 
352
347
  # Print out the tools that are connected
353
348
  for server_name, client in self.mcp_clients.items():
@@ -53,6 +53,26 @@ if [ "${SECURE:-false}" = "true" ]; then
53
53
  CMD="$CMD --secure"
54
54
  fi
55
55
 
56
+ # Start OpenTelemetry Collector in the background
57
+ if [ -n "$CLICKHOUSE_ENDPOINT" ] && [ -n "$CLICKHOUSE_PASSWORD" ]; then
58
+ echo "Starting OpenTelemetry Collector with Clickhouse export..."
59
+ CONFIG_FILE="/etc/otel/config-clickhouse.yaml"
60
+ else
61
+ echo "Starting OpenTelemetry Collector with file export only..."
62
+ CONFIG_FILE="/etc/otel/config-file.yaml"
63
+ fi
64
+
65
+ /usr/local/bin/otelcol-contrib --config "$CONFIG_FILE" &
66
+ OTEL_PID=$!
67
+
68
+ # Function to cleanup processes on exit
69
+ cleanup() {
70
+ echo "Shutting down..."
71
+ kill $OTEL_PID
72
+ wait $OTEL_PID
73
+ }
74
+ trap cleanup EXIT
75
+
56
76
  echo "Starting Letta server at http://$HOST:$PORT..."
57
77
  echo "Executing: $CMD"
58
78
  exec $CMD
@@ -59,7 +59,6 @@ from letta.services.passage_manager import PassageManager
59
59
  from letta.services.source_manager import SourceManager
60
60
  from letta.services.tool_manager import ToolManager
61
61
  from letta.settings import settings
62
- from letta.tracing import trace_method
63
62
  from letta.utils import enforce_types, united_diff
64
63
 
65
64
  logger = get_logger(__name__)
@@ -83,7 +82,6 @@ class AgentManager:
83
82
  # ======================================================================================================================
84
83
  # Basic CRUD operations
85
84
  # ======================================================================================================================
86
- @trace_method
87
85
  @enforce_types
88
86
  def create_agent(
89
87
  self,
@@ -446,7 +444,6 @@ class AgentManager:
446
444
  agent = AgentModel.read(db_session=session, name=agent_name, actor=actor)
447
445
  return agent.to_pydantic()
448
446
 
449
- @trace_method
450
447
  @enforce_types
451
448
  def delete_agent(self, agent_id: str, actor: PydanticUser) -> None:
452
449
  """
@@ -173,6 +173,7 @@ class Settings(BaseSettings):
173
173
 
174
174
  # telemetry logging
175
175
  verbose_telemetry_logging: bool = False
176
+ otel_exporter_otlp_endpoint: str = "http://localhost:4317"
176
177
 
177
178
  # uvicorn settings
178
179
  uvicorn_workers: int = 1
@@ -207,7 +207,7 @@ def log_event(name: str, attributes: Optional[Dict[str, Any]] = None, timestamp:
207
207
  current_span = trace.get_current_span()
208
208
  if current_span:
209
209
  if timestamp is None:
210
- timestamp = int(time.perf_counter_ns())
210
+ timestamp = time.time_ns()
211
211
 
212
212
  def _safe_convert(v):
213
213
  if isinstance(v, (str, bool, int, float)):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "letta-nightly"
3
- version = "0.6.40.dev20250314173529"
3
+ version = "0.6.41.dev20250314233053"
4
4
  packages = [
5
5
  {include = "letta"},
6
6
  ]
@@ -1,129 +0,0 @@
1
- import asyncio
2
- from enum import Enum
3
- from typing import List, Optional, Tuple
4
-
5
- from mcp import ClientSession, StdioServerParameters, Tool
6
- from mcp.client.sse import sse_client
7
- from mcp.client.stdio import stdio_client
8
- from pydantic import BaseModel, Field
9
-
10
- from letta.log import get_logger
11
-
12
- logger = get_logger(__name__)
13
-
14
- # see: https://modelcontextprotocol.io/quickstart/user
15
- MCP_CONFIG_TOPLEVEL_KEY = "mcpServers"
16
-
17
-
18
- class MCPTool(Tool):
19
- """A simple wrapper around MCP's tool definition (to avoid conflict with our own)"""
20
-
21
-
22
- class MCPServerType(str, Enum):
23
- SSE = "sse"
24
- STDIO = "stdio"
25
-
26
-
27
- class BaseServerConfig(BaseModel):
28
- server_name: str = Field(..., description="The name of the server")
29
- type: MCPServerType
30
-
31
-
32
- class SSEServerConfig(BaseServerConfig):
33
- type: MCPServerType = MCPServerType.SSE
34
- server_url: str = Field(..., description="The URL of the server (MCP SSE client will connect to this URL)")
35
-
36
- def to_dict(self) -> dict:
37
- values = {
38
- "transport": "sse",
39
- "url": self.server_url,
40
- }
41
- return values
42
-
43
-
44
- class StdioServerConfig(BaseServerConfig):
45
- type: MCPServerType = MCPServerType.STDIO
46
- command: str = Field(..., description="The command to run (MCP 'local' client will run this command)")
47
- args: List[str] = Field(..., description="The arguments to pass to the command")
48
- env: Optional[dict[str, str]] = Field(None, description="Environment variables to set")
49
-
50
- def to_dict(self) -> dict:
51
- values = {
52
- "transport": "stdio",
53
- "command": self.command,
54
- "args": self.args,
55
- }
56
- if self.env is not None:
57
- values["env"] = self.env
58
- return values
59
-
60
-
61
- class BaseMCPClient:
62
- def __init__(self):
63
- self.session: Optional[ClientSession] = None
64
- self.stdio = None
65
- self.write = None
66
- self.initialized = False
67
- self.loop = asyncio.new_event_loop()
68
- self.cleanup_funcs = []
69
-
70
- def connect_to_server(self, server_config: BaseServerConfig):
71
- asyncio.set_event_loop(self.loop)
72
- self._initialize_connection(server_config)
73
- self.loop.run_until_complete(self.session.initialize())
74
- self.initialized = True
75
-
76
- def _initialize_connection(self, server_config: BaseServerConfig):
77
- raise NotImplementedError("Subclasses must implement _initialize_connection")
78
-
79
- def list_tools(self) -> List[Tool]:
80
- self._check_initialized()
81
- response = self.loop.run_until_complete(self.session.list_tools())
82
- return response.tools
83
-
84
- def execute_tool(self, tool_name: str, tool_args: dict) -> Tuple[str, bool]:
85
- self._check_initialized()
86
- result = self.loop.run_until_complete(self.session.call_tool(tool_name, tool_args))
87
- return str(result.content), result.isError
88
-
89
- def _check_initialized(self):
90
- if not self.initialized:
91
- logger.error("MCPClient has not been initialized")
92
- raise RuntimeError("MCPClient has not been initialized")
93
-
94
- def cleanup(self):
95
- try:
96
- for cleanup_func in self.cleanup_funcs:
97
- cleanup_func()
98
- self.initialized = False
99
- if not self.loop.is_closed():
100
- self.loop.close()
101
- except Exception as e:
102
- logger.warning(e)
103
- finally:
104
- logger.info("Cleaned up MCP clients on shutdown.")
105
-
106
-
107
- class StdioMCPClient(BaseMCPClient):
108
- def _initialize_connection(self, server_config: StdioServerConfig):
109
- server_params = StdioServerParameters(command=server_config.command, args=server_config.args)
110
- stdio_cm = stdio_client(server_params)
111
- stdio_transport = self.loop.run_until_complete(stdio_cm.__aenter__())
112
- self.stdio, self.write = stdio_transport
113
- self.cleanup_funcs.append(lambda: self.loop.run_until_complete(stdio_cm.__aexit__(None, None, None)))
114
-
115
- session_cm = ClientSession(self.stdio, self.write)
116
- self.session = self.loop.run_until_complete(session_cm.__aenter__())
117
- self.cleanup_funcs.append(lambda: self.loop.run_until_complete(session_cm.__aexit__(None, None, None)))
118
-
119
-
120
- class SSEMCPClient(BaseMCPClient):
121
- def _initialize_connection(self, server_config: SSEServerConfig):
122
- sse_cm = sse_client(url=server_config.server_url)
123
- sse_transport = self.loop.run_until_complete(sse_cm.__aenter__())
124
- self.stdio, self.write = sse_transport
125
- self.cleanup_funcs.append(lambda: self.loop.run_until_complete(sse_cm.__aexit__(None, None, None)))
126
-
127
- session_cm = ClientSession(self.stdio, self.write)
128
- self.session = self.loop.run_until_complete(session_cm.__aenter__())
129
- self.cleanup_funcs.append(lambda: self.loop.run_until_complete(session_cm.__aexit__(None, None, None)))