letta-nightly 0.6.35.dev20250304104154__tar.gz → 0.6.36.dev20250305104137__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 (281) hide show
  1. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/PKG-INFO +1 -1
  2. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/__init__.py +1 -1
  3. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/client/client.py +11 -0
  4. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/constants.py +4 -1
  5. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/log.py +1 -1
  6. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/letta_base.py +3 -3
  7. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/providers.py +1 -1
  8. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/sandbox_config.py +2 -1
  9. letta_nightly-0.6.36.dev20250305104137/letta/serialize_schemas/agent.py +69 -0
  10. letta_nightly-0.6.36.dev20250305104137/letta/serialize_schemas/base.py +53 -0
  11. letta_nightly-0.6.36.dev20250305104137/letta/serialize_schemas/block.py +15 -0
  12. letta_nightly-0.6.36.dev20250305104137/letta/serialize_schemas/message.py +29 -0
  13. letta_nightly-0.6.36.dev20250305104137/letta/serialize_schemas/tool.py +15 -0
  14. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/identities.py +17 -4
  15. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/startup.sh +9 -0
  16. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/agent_manager.py +41 -9
  17. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/message_manager.py +1 -1
  18. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/sandbox_config_manager.py +2 -2
  19. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/pyproject.toml +1 -1
  20. letta_nightly-0.6.35.dev20250304104154/letta/serialize_schemas/agent.py +0 -36
  21. letta_nightly-0.6.35.dev20250304104154/letta/serialize_schemas/base.py +0 -12
  22. letta_nightly-0.6.35.dev20250304104154/letta/serialize_schemas/message.py +0 -15
  23. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/LICENSE +0 -0
  24. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/README.md +0 -0
  25. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/__main__.py +0 -0
  26. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/agent.py +0 -0
  27. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/agents/__init__.py +0 -0
  28. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/agents/base_agent.py +0 -0
  29. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/agents/ephemeral_agent.py +0 -0
  30. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/agents/low_latency_agent.py +0 -0
  31. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/benchmark/benchmark.py +0 -0
  32. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/benchmark/constants.py +0 -0
  33. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/cli/cli.py +0 -0
  34. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/cli/cli_config.py +0 -0
  35. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/cli/cli_load.py +0 -0
  36. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/client/__init__.py +0 -0
  37. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/client/streaming.py +0 -0
  38. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/client/utils.py +0 -0
  39. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/config.py +0 -0
  40. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/data_sources/connectors.py +0 -0
  41. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/data_sources/connectors_helper.py +0 -0
  42. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/embeddings.py +0 -0
  43. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/errors.py +0 -0
  44. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/__init__.py +0 -0
  45. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/ast_parsers.py +0 -0
  46. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/function_sets/base.py +0 -0
  47. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/function_sets/extras.py +0 -0
  48. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/function_sets/multi_agent.py +0 -0
  49. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/functions.py +0 -0
  50. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/helpers.py +0 -0
  51. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/interface.py +0 -0
  52. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/functions/schema_generator.py +0 -0
  53. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/__init__.py +0 -0
  54. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/composio_helpers.py +0 -0
  55. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/converters.py +0 -0
  56. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/datetime_helpers.py +0 -0
  57. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/json_helpers.py +0 -0
  58. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/tool_execution_helper.py +0 -0
  59. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/helpers/tool_rule_solver.py +0 -0
  60. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/humans/__init__.py +0 -0
  61. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/humans/examples/basic.txt +0 -0
  62. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/humans/examples/cs_phd.txt +0 -0
  63. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/interface.py +0 -0
  64. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/interfaces/__init__.py +0 -0
  65. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  66. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/interfaces/utils.py +0 -0
  67. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/__init__.py +0 -0
  68. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/anthropic.py +0 -0
  69. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/aws_bedrock.py +0 -0
  70. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/azure_openai.py +0 -0
  71. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/azure_openai_constants.py +0 -0
  72. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/cohere.py +0 -0
  73. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/deepseek.py +0 -0
  74. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/google_ai.py +0 -0
  75. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/google_constants.py +0 -0
  76. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/google_vertex.py +0 -0
  77. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/helpers.py +0 -0
  78. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/llm_api_tools.py +0 -0
  79. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/mistral.py +0 -0
  80. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/llm_api/openai.py +0 -0
  81. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/README.md +0 -0
  82. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/__init__.py +0 -0
  83. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/chat_completion_proxy.py +0 -0
  84. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/constants.py +0 -0
  85. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/function_parser.py +0 -0
  86. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/grammars/__init__.py +0 -0
  87. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  88. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/grammars/json.gbnf +0 -0
  89. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  90. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/json_parser.py +0 -0
  91. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/koboldcpp/api.py +0 -0
  92. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/koboldcpp/settings.py +0 -0
  93. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llamacpp/api.py +0 -0
  94. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llamacpp/settings.py +0 -0
  95. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  96. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  97. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  98. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  99. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  100. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  101. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  102. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  103. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  104. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/lmstudio/api.py +0 -0
  105. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/lmstudio/settings.py +0 -0
  106. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/ollama/api.py +0 -0
  107. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/ollama/settings.py +0 -0
  108. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/settings/__init__.py +0 -0
  109. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  110. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/settings/settings.py +0 -0
  111. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/settings/simple.py +0 -0
  112. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/utils.py +0 -0
  113. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/vllm/api.py +0 -0
  114. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/webui/api.py +0 -0
  115. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/webui/legacy_api.py +0 -0
  116. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/webui/legacy_settings.py +0 -0
  117. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/local_llm/webui/settings.py +0 -0
  118. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/main.py +0 -0
  119. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/memory.py +0 -0
  120. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/offline_memory_agent.py +0 -0
  121. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/openai_backcompat/__init__.py +0 -0
  122. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/openai_backcompat/openai_object.py +0 -0
  123. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/__all__.py +0 -0
  124. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/__init__.py +0 -0
  125. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/agent.py +0 -0
  126. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/agents_tags.py +0 -0
  127. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/base.py +0 -0
  128. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/block.py +0 -0
  129. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/blocks_agents.py +0 -0
  130. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/custom_columns.py +0 -0
  131. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/enums.py +0 -0
  132. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/errors.py +0 -0
  133. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/file.py +0 -0
  134. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/identities_agents.py +0 -0
  135. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/identity.py +0 -0
  136. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/job.py +0 -0
  137. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/job_messages.py +0 -0
  138. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/message.py +0 -0
  139. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/mixins.py +0 -0
  140. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/organization.py +0 -0
  141. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/passage.py +0 -0
  142. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/provider.py +0 -0
  143. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/sandbox_config.py +0 -0
  144. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/source.py +0 -0
  145. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/sources_agents.py +0 -0
  146. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/sqlalchemy_base.py +0 -0
  147. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/sqlite_functions.py +0 -0
  148. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/step.py +0 -0
  149. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/tool.py +0 -0
  150. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/tools_agents.py +0 -0
  151. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/orm/user.py +0 -0
  152. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/__init__.py +0 -0
  153. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/anna_pa.txt +0 -0
  154. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/google_search_persona.txt +0 -0
  155. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/memgpt_doc.txt +0 -0
  156. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/memgpt_starter.txt +0 -0
  157. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/o1_persona.txt +0 -0
  158. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/offline_memory_persona.txt +0 -0
  159. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/sam.txt +0 -0
  160. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/sam_pov.txt +0 -0
  161. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  162. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/personas/examples/sqldb/test.db +0 -0
  163. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/__init__.py +0 -0
  164. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/gpt_summarize.py +0 -0
  165. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/gpt_system.py +0 -0
  166. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_base.txt +0 -0
  167. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_chat.txt +0 -0
  168. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  169. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  170. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  171. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_doc.txt +0 -0
  172. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  173. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  174. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  175. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  176. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  177. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  178. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  179. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/pytest.ini +0 -0
  180. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/agent.py +0 -0
  181. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/block.py +0 -0
  182. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/embedding_config.py +0 -0
  183. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/embedding_config_overrides.py +0 -0
  184. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/enums.py +0 -0
  185. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/environment_variables.py +0 -0
  186. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/file.py +0 -0
  187. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/health.py +0 -0
  188. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/identity.py +0 -0
  189. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/job.py +0 -0
  190. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/letta_message.py +0 -0
  191. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/letta_request.py +0 -0
  192. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/letta_response.py +0 -0
  193. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/llm_config.py +0 -0
  194. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/llm_config_overrides.py +0 -0
  195. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/memory.py +0 -0
  196. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/message.py +0 -0
  197. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/openai/chat_completion_request.py +0 -0
  198. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/openai/chat_completion_response.py +0 -0
  199. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/openai/chat_completions.py +0 -0
  200. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/openai/embedding_response.py +0 -0
  201. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/openai/openai.py +0 -0
  202. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/organization.py +0 -0
  203. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/passage.py +0 -0
  204. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/run.py +0 -0
  205. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/source.py +0 -0
  206. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/step.py +0 -0
  207. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/tool.py +0 -0
  208. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/tool_rule.py +0 -0
  209. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/usage.py +0 -0
  210. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/schemas/user.py +0 -0
  211. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/serialize_schemas/__init__.py +0 -0
  212. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/serialize_schemas/custom_fields.py +0 -0
  213. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/__init__.py +0 -0
  214. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/constants.py +0 -0
  215. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/db.py +0 -0
  216. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/generate_openapi_schema.sh +0 -0
  217. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/__init__.py +0 -0
  218. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/app.py +0 -0
  219. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/auth/__init__.py +0 -0
  220. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/auth/index.py +0 -0
  221. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/auth_token.py +0 -0
  222. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/chat_completions_interface.py +0 -0
  223. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/interface.py +0 -0
  224. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/optimistic_json_parser.py +0 -0
  225. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/__init__.py +0 -0
  226. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  227. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  228. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  229. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/agents.py +0 -0
  230. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  231. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/health.py +0 -0
  232. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  233. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/llms.py +0 -0
  234. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  235. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/providers.py +0 -0
  236. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/runs.py +0 -0
  237. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  238. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/sources.py +0 -0
  239. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/steps.py +0 -0
  240. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/tags.py +0 -0
  241. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/tools.py +0 -0
  242. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/users.py +0 -0
  243. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/routers/v1/voice.py +0 -0
  244. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/static_files.py +0 -0
  245. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/rest_api/utils.py +0 -0
  246. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/server.py +0 -0
  247. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/static_files/assets/index-048c9598.js +0 -0
  248. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  249. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/static_files/favicon.ico +0 -0
  250. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/static_files/index.html +0 -0
  251. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  252. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/utils.py +0 -0
  253. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/ws_api/__init__.py +0 -0
  254. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/ws_api/example_client.py +0 -0
  255. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/ws_api/interface.py +0 -0
  256. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/ws_api/protocol.py +0 -0
  257. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/server/ws_api/server.py +0 -0
  258. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/__init__.py +0 -0
  259. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/block_manager.py +0 -0
  260. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/helpers/agent_manager_helper.py +0 -0
  261. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/helpers/tool_execution_helper.py +0 -0
  262. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/identity_manager.py +0 -0
  263. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/job_manager.py +0 -0
  264. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/organization_manager.py +0 -0
  265. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/passage_manager.py +0 -0
  266. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/per_agent_lock_manager.py +0 -0
  267. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/provider_manager.py +0 -0
  268. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/source_manager.py +0 -0
  269. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/step_manager.py +0 -0
  270. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/summarizer/__init__.py +0 -0
  271. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/summarizer/enums.py +0 -0
  272. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/summarizer/summarizer.py +0 -0
  273. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/tool_execution_sandbox.py +0 -0
  274. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/tool_manager.py +0 -0
  275. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/services/user_manager.py +0 -0
  276. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/settings.py +0 -0
  277. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/streaming_interface.py +0 -0
  278. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/streaming_utils.py +0 -0
  279. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/system.py +0 -0
  280. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/tracing.py +0 -0
  281. {letta_nightly-0.6.35.dev20250304104154 → letta_nightly-0.6.36.dev20250305104137}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.35.dev20250304104154
3
+ Version: 0.6.36.dev20250305104137
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.35"
1
+ __version__ = "0.6.36"
2
2
 
3
3
  # import clients
4
4
  from letta.client.client import LocalClient, RESTClient, create_client
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import sys
2
3
  import time
3
4
  from typing import Callable, Dict, Generator, List, Optional, Union
4
5
 
@@ -40,6 +41,16 @@ from letta.schemas.tool_rule import BaseToolRule
40
41
  from letta.server.rest_api.interface import QueuingInterface
41
42
  from letta.utils import get_human_text, get_persona_text
42
43
 
44
+ # Print deprecation notice in yellow when module is imported
45
+ print(
46
+ "\n\n\033[93m"
47
+ + "DEPRECATION WARNING: This legacy Python client has been deprecated and will be removed in a future release.\n"
48
+ + "Please migrate to the new official python SDK by running: pip install letta-client\n"
49
+ + "For further documentation, visit: https://docs.letta.com/api-reference/overview#python-sdk"
50
+ + "\033[0m\n\n",
51
+ file=sys.stderr,
52
+ )
53
+
43
54
 
44
55
  def create_client(base_url: Optional[str] = None, token: Optional[str] = None):
45
56
  if base_url is None:
@@ -2,7 +2,7 @@ import os
2
2
  from logging import CRITICAL, DEBUG, ERROR, INFO, NOTSET, WARN, WARNING
3
3
 
4
4
  LETTA_DIR = os.path.join(os.path.expanduser("~"), ".letta")
5
- LETTA_DIR_TOOL_SANDBOX = os.path.join(LETTA_DIR, "tool_sandbox_dir")
5
+ LETTA_TOOL_EXECUTION_DIR = os.path.join(LETTA_DIR, "tool_execution_dir")
6
6
 
7
7
  ADMIN_PREFIX = "/v1/admin"
8
8
  API_PREFIX = "/v1"
@@ -146,6 +146,9 @@ MESSAGE_SUMMARY_WARNING_STR = " ".join(
146
146
  # "Remember to pass request_heartbeat = true if you would like to send a message immediately after.",
147
147
  ]
148
148
  )
149
+ DATA_SOURCE_ATTACH_ALERT = (
150
+ "[ALERT] New data was just uploaded to archival memory. You can view this data by calling the archival_memory_search tool."
151
+ )
149
152
 
150
153
  # The ackknowledgement message used in the summarize sequence
151
154
  MESSAGE_SUMMARY_REQUEST_ACK = "Understood, I will respond with a summary of the message (and only the summary, nothing else) once I receive the conversation history. I'm ready."
@@ -54,7 +54,7 @@ DEVELOPMENT_LOGGING = {
54
54
  "propagate": True, # Let logs bubble up to root
55
55
  },
56
56
  "uvicorn": {
57
- "level": "DEBUG",
57
+ "level": "INFO",
58
58
  "handlers": ["console"],
59
59
  "propagate": True,
60
60
  },
@@ -38,15 +38,15 @@ class LettaBase(BaseModel):
38
38
  description=cls._id_description(prefix),
39
39
  pattern=cls._id_regex_pattern(prefix),
40
40
  examples=[cls._id_example(prefix)],
41
- default_factory=cls._generate_id,
41
+ default_factory=cls.generate_id,
42
42
  )
43
43
 
44
44
  @classmethod
45
- def _generate_id(cls, prefix: Optional[str] = None) -> str:
45
+ def generate_id(cls, prefix: Optional[str] = None) -> str:
46
46
  prefix = prefix or cls.__id_prefix__
47
47
  return f"{prefix}-{uuid.uuid4()}"
48
48
 
49
- # def _generate_id(self) -> str:
49
+ # def generate_id(self) -> str:
50
50
  # return f"{self.__id_prefix__}-{uuid.uuid4()}"
51
51
 
52
52
  @classmethod
@@ -27,7 +27,7 @@ class Provider(ProviderBase):
27
27
 
28
28
  def resolve_identifier(self):
29
29
  if not self.id:
30
- self.id = ProviderBase._generate_id(prefix=ProviderBase.__id_prefix__)
30
+ self.id = ProviderBase.generate_id(prefix=ProviderBase.__id_prefix__)
31
31
 
32
32
  def list_llm_models(self) -> List[LLMConfig]:
33
33
  return []
@@ -6,6 +6,7 @@ from typing import Any, Dict, List, Literal, Optional, Union
6
6
 
7
7
  from pydantic import BaseModel, Field, model_validator
8
8
 
9
+ from letta.constants import LETTA_TOOL_EXECUTION_DIR
9
10
  from letta.schemas.agent import AgentState
10
11
  from letta.schemas.letta_base import LettaBase, OrmMetadataBase
11
12
  from letta.settings import tool_settings
@@ -71,7 +72,7 @@ class LocalSandboxConfig(BaseModel):
71
72
  if tool_settings.local_sandbox_dir:
72
73
  data["sandbox_dir"] = tool_settings.local_sandbox_dir
73
74
  else:
74
- data["sandbox_dir"] = "~/.letta"
75
+ data["sandbox_dir"] = LETTA_TOOL_EXECUTION_DIR
75
76
 
76
77
  return data
77
78
 
@@ -0,0 +1,69 @@
1
+ from typing import Dict
2
+
3
+ from marshmallow import fields, post_dump
4
+
5
+ from letta.orm import Agent
6
+ from letta.schemas.agent import AgentState as PydanticAgentState
7
+ from letta.schemas.user import User
8
+ from letta.serialize_schemas.base import BaseSchema
9
+ from letta.serialize_schemas.block import SerializedBlockSchema
10
+ from letta.serialize_schemas.custom_fields import EmbeddingConfigField, LLMConfigField, ToolRulesField
11
+ from letta.serialize_schemas.message import SerializedMessageSchema
12
+ from letta.serialize_schemas.tool import SerializedToolSchema
13
+ from letta.server.db import SessionLocal
14
+
15
+
16
+ class SerializedAgentSchema(BaseSchema):
17
+ """
18
+ Marshmallow schema for serializing/deserializing Agent objects.
19
+ Excludes relational fields.
20
+ """
21
+
22
+ __pydantic_model__ = PydanticAgentState
23
+
24
+ llm_config = LLMConfigField()
25
+ embedding_config = EmbeddingConfigField()
26
+ tool_rules = ToolRulesField()
27
+
28
+ messages = fields.List(fields.Nested(SerializedMessageSchema))
29
+ core_memory = fields.List(fields.Nested(SerializedBlockSchema))
30
+ tools = fields.List(fields.Nested(SerializedToolSchema))
31
+
32
+ def __init__(self, *args, session: SessionLocal, actor: User, **kwargs):
33
+ super().__init__(*args, actor=actor, **kwargs)
34
+ self.session = session
35
+
36
+ # Propagate session and actor to nested schemas automatically
37
+ for field in self.fields.values():
38
+ if isinstance(field, fields.List) and isinstance(field.inner, fields.Nested):
39
+ field.inner.schema.session = session
40
+ field.inner.schema.actor = actor
41
+ elif isinstance(field, fields.Nested):
42
+ field.schema.session = session
43
+ field.schema.actor = actor
44
+
45
+ @post_dump
46
+ def sanitize_ids(self, data: Dict, **kwargs):
47
+ data = super().sanitize_ids(data, **kwargs)
48
+
49
+ # Remap IDs of messages
50
+ # Need to do this in post, so we can correctly map the in-context message IDs
51
+ # TODO: Remap message_ids to reference objects, not just be a list
52
+ id_remapping = dict()
53
+ for message in data.get("messages"):
54
+ message_id = message.get("id")
55
+ if message_id not in id_remapping:
56
+ id_remapping[message_id] = SerializedMessageSchema.__pydantic_model__.generate_id()
57
+ message["id"] = id_remapping[message_id]
58
+ else:
59
+ raise ValueError(f"Duplicate message IDs in agent.messages: {message_id}")
60
+
61
+ # Remap in context message ids
62
+ data["message_ids"] = [id_remapping[message_id] for message_id in data.get("message_ids")]
63
+
64
+ return data
65
+
66
+ class Meta(BaseSchema.Meta):
67
+ model = Agent
68
+ # TODO: Serialize these as well...
69
+ exclude = BaseSchema.Meta.exclude + ("sources", "tags", "source_passages", "agent_passages")
@@ -0,0 +1,53 @@
1
+ from typing import Dict, Optional
2
+
3
+ from marshmallow import post_dump, pre_load
4
+ from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
5
+ from sqlalchemy.inspection import inspect
6
+
7
+ from letta.schemas.user import User
8
+
9
+
10
+ class BaseSchema(SQLAlchemyAutoSchema):
11
+ """
12
+ Base schema for all SQLAlchemy models.
13
+ This ensures all schemas share the same session.
14
+ """
15
+
16
+ __pydantic_model__ = None
17
+ sensitive_ids = {"_created_by_id", "_last_updated_by_id"}
18
+ sensitive_relationships = {"organization"}
19
+ id_scramble_placeholder = "xxx"
20
+
21
+ def __init__(self, *args, actor: Optional[User] = None, **kwargs):
22
+ super().__init__(*args, **kwargs)
23
+ self.actor = actor
24
+
25
+ @post_dump
26
+ def sanitize_ids(self, data: Dict, **kwargs):
27
+ data["id"] = self.__pydantic_model__.generate_id()
28
+
29
+ for sensitive_id in BaseSchema.sensitive_ids.union(BaseSchema.sensitive_relationships):
30
+ if sensitive_id in data:
31
+ data[sensitive_id] = BaseSchema.id_scramble_placeholder
32
+
33
+ return data
34
+
35
+ @pre_load
36
+ def regenerate_ids(self, data: Dict, **kwargs):
37
+ if self.Meta.model:
38
+ mapper = inspect(self.Meta.model)
39
+ for sensitive_id in BaseSchema.sensitive_ids:
40
+ if sensitive_id in mapper.columns:
41
+ data[sensitive_id] = self.actor.id
42
+
43
+ for relationship in BaseSchema.sensitive_relationships:
44
+ if relationship in mapper.relationships:
45
+ data[relationship] = self.actor.organization_id
46
+
47
+ return data
48
+
49
+ class Meta:
50
+ model = None
51
+ include_relationships = True
52
+ load_instance = True
53
+ exclude = ()
@@ -0,0 +1,15 @@
1
+ from letta.orm.block import Block
2
+ from letta.schemas.block import Block as PydanticBlock
3
+ from letta.serialize_schemas.base import BaseSchema
4
+
5
+
6
+ class SerializedBlockSchema(BaseSchema):
7
+ """
8
+ Marshmallow schema for serializing/deserializing Block objects.
9
+ """
10
+
11
+ __pydantic_model__ = PydanticBlock
12
+
13
+ class Meta(BaseSchema.Meta):
14
+ model = Block
15
+ exclude = BaseSchema.Meta.exclude + ("agents",)
@@ -0,0 +1,29 @@
1
+ from typing import Dict
2
+
3
+ from marshmallow import post_dump
4
+
5
+ from letta.orm.message import Message
6
+ from letta.schemas.message import Message as PydanticMessage
7
+ from letta.serialize_schemas.base import BaseSchema
8
+ from letta.serialize_schemas.custom_fields import ToolCallField
9
+
10
+
11
+ class SerializedMessageSchema(BaseSchema):
12
+ """
13
+ Marshmallow schema for serializing/deserializing Message objects.
14
+ """
15
+
16
+ __pydantic_model__ = PydanticMessage
17
+
18
+ tool_calls = ToolCallField()
19
+
20
+ @post_dump
21
+ def sanitize_ids(self, data: Dict, **kwargs):
22
+ # We don't want to remap here
23
+ # Because of the way that message_ids is just a JSON field on agents
24
+ # We need to wait for the agent dumps, and then keep track of all the message IDs we remapped
25
+ return data
26
+
27
+ class Meta(BaseSchema.Meta):
28
+ model = Message
29
+ exclude = BaseSchema.Meta.exclude + ("step", "job_message", "agent")
@@ -0,0 +1,15 @@
1
+ from letta.orm import Tool
2
+ from letta.schemas.tool import Tool as PydanticTool
3
+ from letta.serialize_schemas.base import BaseSchema
4
+
5
+
6
+ class SerializedToolSchema(BaseSchema):
7
+ """
8
+ Marshmallow schema for serializing/deserializing Tool objects.
9
+ """
10
+
11
+ __pydantic_model__ = PydanticTool
12
+
13
+ class Meta(BaseSchema.Meta):
14
+ model = Tool
15
+ exclude = BaseSchema.Meta.exclude
@@ -42,6 +42,8 @@ def list_identities(
42
42
  )
43
43
  except HTTPException:
44
44
  raise
45
+ except NoResultFound as e:
46
+ raise HTTPException(status_code=404, detail=str(e))
45
47
  except Exception as e:
46
48
  raise HTTPException(status_code=500, detail=f"{e}")
47
49
  return identities
@@ -75,11 +77,11 @@ def create_identity(
75
77
  except UniqueConstraintViolationError:
76
78
  if identity.project_id:
77
79
  raise HTTPException(
78
- status_code=400,
80
+ status_code=409,
79
81
  detail=f"An identity with identifier key {identity.identifier_key} already exists for project {identity.project_id}",
80
82
  )
81
83
  else:
82
- raise HTTPException(status_code=400, detail=f"An identity with identifier key {identity.identifier_key} already exists")
84
+ raise HTTPException(status_code=409, detail=f"An identity with identifier key {identity.identifier_key} already exists")
83
85
  except Exception as e:
84
86
  raise HTTPException(status_code=500, detail=f"{e}")
85
87
 
@@ -96,6 +98,8 @@ def upsert_identity(
96
98
  return server.identity_manager.upsert_identity(identity=identity, actor=actor)
97
99
  except HTTPException:
98
100
  raise
101
+ except NoResultFound as e:
102
+ raise HTTPException(status_code=404, detail=str(e))
99
103
  except Exception as e:
100
104
  raise HTTPException(status_code=500, detail=f"{e}")
101
105
 
@@ -112,6 +116,8 @@ def modify_identity(
112
116
  return server.identity_manager.update_identity(identity_id=identity_id, identity=identity, actor=actor)
113
117
  except HTTPException:
114
118
  raise
119
+ except NoResultFound as e:
120
+ raise HTTPException(status_code=404, detail=str(e))
115
121
  except Exception as e:
116
122
  raise HTTPException(status_code=500, detail=f"{e}")
117
123
 
@@ -125,5 +131,12 @@ def delete_identity(
125
131
  """
126
132
  Delete an identity by its identifier key
127
133
  """
128
- actor = server.user_manager.get_user_or_default(user_id=actor_id)
129
- server.identity_manager.delete_identity(identity_id=identity_id, actor=actor)
134
+ try:
135
+ actor = server.user_manager.get_user_or_default(user_id=actor_id)
136
+ server.identity_manager.delete_identity(identity_id=identity_id, actor=actor)
137
+ except HTTPException:
138
+ raise
139
+ except NoResultFound as e:
140
+ raise HTTPException(status_code=404, detail=str(e))
141
+ except Exception as e:
142
+ raise HTTPException(status_code=500, detail=f"{e}")
@@ -38,6 +38,15 @@ if ! alembic upgrade head; then
38
38
  fi
39
39
  echo "Database migration completed successfully."
40
40
 
41
+ # Set permissions for tool execution directory if configured
42
+ if [ -n "$LETTA_SANDBOX_MOUNT_PATH" ]; then
43
+ if ! chmod 777 "$LETTA_SANDBOX_MOUNT_PATH"; then
44
+ echo "ERROR: Failed to set permissions for tool execution directory at: $LETTA_SANDBOX_MOUNT_PATH"
45
+ echo "Please check that the directory exists and is accessible"
46
+ exit 1
47
+ fi
48
+ fi
49
+
41
50
  # If ADE is enabled, add the --ade flag to the command
42
51
  CMD="letta server --host $HOST --port $PORT"
43
52
  if [ "${SECURE:-false}" = "true" ]; then
@@ -4,7 +4,7 @@ from typing import Dict, List, Optional
4
4
  import numpy as np
5
5
  from sqlalchemy import Select, and_, func, literal, or_, select, union_all
6
6
 
7
- from letta.constants import BASE_MEMORY_TOOLS, BASE_TOOLS, MAX_EMBEDDING_DIM, MULTI_AGENT_TOOLS
7
+ from letta.constants import BASE_MEMORY_TOOLS, BASE_TOOLS, DATA_SOURCE_ATTACH_ALERT, MAX_EMBEDDING_DIM, MULTI_AGENT_TOOLS
8
8
  from letta.embeddings import embedding_model
9
9
  from letta.helpers.datetime_helpers import get_utc_time
10
10
  from letta.log import get_logger
@@ -35,6 +35,7 @@ from letta.schemas.tool_rule import TerminalToolRule as PydanticTerminalToolRule
35
35
  from letta.schemas.tool_rule import ToolRule as PydanticToolRule
36
36
  from letta.schemas.user import User as PydanticUser
37
37
  from letta.serialize_schemas import SerializedAgentSchema
38
+ from letta.serialize_schemas.tool import SerializedToolSchema
38
39
  from letta.services.block_manager import BlockManager
39
40
  from letta.services.helpers.agent_manager_helper import (
40
41
  _process_relationship,
@@ -394,18 +395,28 @@ class AgentManager:
394
395
  with self.session_maker() as session:
395
396
  # Retrieve the agent
396
397
  agent = AgentModel.read(db_session=session, identifier=agent_id, actor=actor)
397
- schema = SerializedAgentSchema(session=session)
398
+ schema = SerializedAgentSchema(session=session, actor=actor)
398
399
  return schema.dump(agent)
399
400
 
400
401
  @enforce_types
401
- def deserialize(self, serialized_agent: dict, actor: PydanticUser) -> PydanticAgentState:
402
- # TODO: Use actor to override fields
402
+ def deserialize(self, serialized_agent: dict, actor: PydanticUser, mark_as_copy: bool = True) -> PydanticAgentState:
403
+ tool_data_list = serialized_agent.pop("tools", [])
404
+
403
405
  with self.session_maker() as session:
404
- schema = SerializedAgentSchema(session=session)
406
+ schema = SerializedAgentSchema(session=session, actor=actor)
405
407
  agent = schema.load(serialized_agent, session=session)
406
- agent.organization_id = actor.organization_id
407
- agent = agent.create(session, actor=actor)
408
- return agent.to_pydantic()
408
+ if mark_as_copy:
409
+ agent.name += "_copy"
410
+ agent.create(session, actor=actor)
411
+ pydantic_agent = agent.to_pydantic()
412
+
413
+ # Need to do this separately as there's some fancy upsert logic that SqlAlchemy cannot handle
414
+ for tool_data in tool_data_list:
415
+ pydantic_tool = SerializedToolSchema(actor=actor).load(tool_data, transient=True).to_pydantic()
416
+ pydantic_tool = self.tool_manager.create_or_update_tool(pydantic_tool, actor=actor)
417
+ pydantic_agent = self.attach_tool(agent_id=pydantic_agent.id, tool_id=pydantic_tool.id, actor=actor)
418
+
419
+ return pydantic_agent
409
420
 
410
421
  # ======================================================================================================================
411
422
  # Per Agent Environment Variable Management
@@ -670,6 +681,7 @@ class AgentManager:
670
681
  ValueError: If either agent or source doesn't exist
671
682
  IntegrityError: If the source is already attached to the agent
672
683
  """
684
+
673
685
  with self.session_maker() as session:
674
686
  # Verify both agent and source exist and user has permission to access them
675
687
  agent = AgentModel.read(db_session=session, identifier=agent_id, actor=actor)
@@ -687,7 +699,27 @@ class AgentManager:
687
699
 
688
700
  # Commit the changes
689
701
  agent.update(session, actor=actor)
690
- return agent.to_pydantic()
702
+
703
+ # Add system messsage alert to agent
704
+ self.append_system_message(
705
+ agent_id=agent_id,
706
+ content=DATA_SOURCE_ATTACH_ALERT,
707
+ actor=actor,
708
+ )
709
+
710
+ return agent.to_pydantic()
711
+
712
+ @enforce_types
713
+ def append_system_message(self, agent_id: str, content: str, actor: PydanticUser):
714
+
715
+ # get the agent
716
+ agent = self.get_agent_by_id(agent_id=agent_id, actor=actor)
717
+ message = PydanticMessage.dict_to_message(
718
+ agent_id=agent.id, user_id=actor.id, model=agent.llm_config.model, openai_message_dict={"role": "system", "content": content}
719
+ )
720
+
721
+ # update agent in-context message IDs
722
+ self.append_to_in_context_messages(messages=[message], agent_id=agent_id, actor=actor)
691
723
 
692
724
  @enforce_types
693
725
  def list_attached_sources(self, agent_id: str, actor: PydanticUser) -> List[PydanticSource]:
@@ -46,7 +46,7 @@ class MessageManager:
46
46
 
47
47
  # Sort results directly based on message_ids
48
48
  result_dict = {msg.id: msg.to_pydantic() for msg in results}
49
- return [result_dict[msg_id] for msg_id in message_ids]
49
+ return list(filter(lambda x: x is not None, [result_dict.get(msg_id, None) for msg_id in message_ids]))
50
50
 
51
51
  @enforce_types
52
52
  def create_message(self, pydantic_msg: PydanticMessage, actor: PydanticUser) -> PydanticMessage:
@@ -1,6 +1,6 @@
1
1
  from typing import Dict, List, Optional
2
2
 
3
- from letta.constants import LETTA_DIR_TOOL_SANDBOX
3
+ from letta.constants import LETTA_TOOL_EXECUTION_DIR
4
4
  from letta.log import get_logger
5
5
  from letta.orm.errors import NoResultFound
6
6
  from letta.orm.sandbox_config import SandboxConfig as SandboxConfigModel
@@ -35,7 +35,7 @@ class SandboxConfigManager:
35
35
  default_config = {} # Empty
36
36
  else:
37
37
  # TODO: May want to move this to environment variables v.s. persisting in database
38
- default_local_sandbox_path = LETTA_DIR_TOOL_SANDBOX
38
+ default_local_sandbox_path = LETTA_TOOL_EXECUTION_DIR
39
39
  default_config = LocalSandboxConfig(sandbox_dir=default_local_sandbox_path).model_dump(exclude_none=True)
40
40
 
41
41
  sandbox_config = self.create_or_update_sandbox_config(SandboxConfigCreate(config=default_config), actor=actor)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "letta-nightly"
3
- version = "0.6.35.dev20250304104154"
3
+ version = "0.6.36.dev20250305104137"
4
4
  packages = [
5
5
  {include = "letta"},
6
6
  ]
@@ -1,36 +0,0 @@
1
- from marshmallow import fields
2
-
3
- from letta.orm import Agent
4
- from letta.serialize_schemas.base import BaseSchema
5
- from letta.serialize_schemas.custom_fields import EmbeddingConfigField, LLMConfigField, ToolRulesField
6
- from letta.serialize_schemas.message import SerializedMessageSchema
7
-
8
-
9
- class SerializedAgentSchema(BaseSchema):
10
- """
11
- Marshmallow schema for serializing/deserializing Agent objects.
12
- Excludes relational fields.
13
- """
14
-
15
- llm_config = LLMConfigField()
16
- embedding_config = EmbeddingConfigField()
17
- tool_rules = ToolRulesField()
18
-
19
- messages = fields.List(fields.Nested(SerializedMessageSchema))
20
-
21
- def __init__(self, *args, session=None, **kwargs):
22
- super().__init__(*args, **kwargs)
23
- if session:
24
- self.session = session
25
-
26
- # propagate session to nested schemas
27
- for field_name, field_obj in self.fields.items():
28
- if isinstance(field_obj, fields.List) and hasattr(field_obj.inner, "schema"):
29
- field_obj.inner.schema.session = session
30
- elif hasattr(field_obj, "schema"):
31
- field_obj.schema.session = session
32
-
33
- class Meta(BaseSchema.Meta):
34
- model = Agent
35
- # TODO: Serialize these as well...
36
- exclude = ("tools", "sources", "core_memory", "tags", "source_passages", "agent_passages", "organization")
@@ -1,12 +0,0 @@
1
- from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
2
-
3
-
4
- class BaseSchema(SQLAlchemyAutoSchema):
5
- """
6
- Base schema for all SQLAlchemy models.
7
- This ensures all schemas share the same session.
8
- """
9
-
10
- class Meta:
11
- include_relationships = True
12
- load_instance = True
@@ -1,15 +0,0 @@
1
- from letta.orm.message import Message
2
- from letta.serialize_schemas.base import BaseSchema
3
- from letta.serialize_schemas.custom_fields import ToolCallField
4
-
5
-
6
- class SerializedMessageSchema(BaseSchema):
7
- """
8
- Marshmallow schema for serializing/deserializing Message objects.
9
- """
10
-
11
- tool_calls = ToolCallField()
12
-
13
- class Meta(BaseSchema.Meta):
14
- model = Message
15
- exclude = ("step", "job_message")