letta-nightly 0.8.6.dev20250627214853__tar.gz → 0.8.7.dev20250627220731__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/PKG-INFO +1 -1
  2. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/__init__.py +2 -1
  3. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/constants.py +2 -1
  4. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/function_sets/files.py +20 -18
  5. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/schema_generator.py +119 -3
  6. letta_nightly-0.8.7.dev20250627220731/letta/functions/types.py +18 -0
  7. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/groups/sleeptime_multi_agent_v2.py +5 -1
  8. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/sqlalchemy_base.py +9 -0
  9. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/agent.py +1 -3
  10. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/steps.py +4 -1
  11. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/server.py +1 -1
  12. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/agent_manager.py +9 -4
  13. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/chunker/line_chunker.py +6 -3
  14. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/files_agents_manager.py +34 -0
  15. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/helpers/agent_manager_helper.py +17 -2
  16. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/step_manager.py +11 -29
  17. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/files_tool_executor.py +129 -60
  18. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/utils.py +1 -1
  19. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/pyproject.toml +1 -1
  20. letta_nightly-0.8.6.dev20250627214853/letta/functions/types.py +0 -6
  21. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/LICENSE +0 -0
  22. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/README.md +0 -0
  23. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agent.py +0 -0
  24. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/__init__.py +0 -0
  25. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/base_agent.py +0 -0
  26. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/ephemeral_agent.py +0 -0
  27. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/ephemeral_summary_agent.py +0 -0
  28. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/exceptions.py +0 -0
  29. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/helpers.py +0 -0
  30. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/letta_agent.py +0 -0
  31. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/letta_agent_batch.py +0 -0
  32. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/prompts/summary_system_prompt.txt +0 -0
  33. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/voice_agent.py +0 -0
  34. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/agents/voice_sleeptime_agent.py +0 -0
  35. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/cli/cli.py +0 -0
  36. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/cli/cli_load.py +0 -0
  37. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/client/__init__.py +0 -0
  38. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/client/client.py +0 -0
  39. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/client/streaming.py +0 -0
  40. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/client/utils.py +0 -0
  41. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/config.py +0 -0
  42. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/data_sources/__init__.py +0 -0
  43. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/data_sources/connectors.py +0 -0
  44. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/data_sources/connectors_helper.py +0 -0
  45. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/data_sources/redis_client.py +0 -0
  46. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/embeddings.py +0 -0
  47. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/errors.py +0 -0
  48. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/__init__.py +0 -0
  49. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/ast_parsers.py +0 -0
  50. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/async_composio_toolset.py +0 -0
  51. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/composio_helpers.py +0 -0
  52. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/function_sets/base.py +0 -0
  53. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/function_sets/builtin.py +0 -0
  54. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/function_sets/extras.py +0 -0
  55. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/function_sets/multi_agent.py +0 -0
  56. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/function_sets/voice.py +0 -0
  57. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/functions.py +0 -0
  58. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/helpers.py +0 -0
  59. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/interface.py +0 -0
  60. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/mcp_client/__init__.py +0 -0
  61. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/mcp_client/base_client.py +0 -0
  62. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/mcp_client/exceptions.py +0 -0
  63. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/mcp_client/sse_client.py +0 -0
  64. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/mcp_client/stdio_client.py +0 -0
  65. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/mcp_client/types.py +0 -0
  66. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/functions/prompts.py +0 -0
  67. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/groups/dynamic_multi_agent.py +0 -0
  68. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/groups/helpers.py +0 -0
  69. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/groups/round_robin_multi_agent.py +0 -0
  70. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/groups/sleeptime_multi_agent.py +0 -0
  71. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/groups/supervisor_multi_agent.py +0 -0
  72. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/__init__.py +0 -0
  73. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/composio_helpers.py +0 -0
  74. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/converters.py +0 -0
  75. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/datetime_helpers.py +0 -0
  76. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/decorators.py +0 -0
  77. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/json_helpers.py +0 -0
  78. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/message_helper.py +0 -0
  79. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/singleton.py +0 -0
  80. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/tool_execution_helper.py +0 -0
  81. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/helpers/tool_rule_solver.py +0 -0
  82. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/humans/__init__.py +0 -0
  83. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/humans/examples/basic.txt +0 -0
  84. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/humans/examples/cs_phd.txt +0 -0
  85. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/interface.py +0 -0
  86. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/interfaces/__init__.py +0 -0
  87. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/interfaces/anthropic_streaming_interface.py +0 -0
  88. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  89. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/interfaces/openai_streaming_interface.py +0 -0
  90. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/interfaces/utils.py +0 -0
  91. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/jobs/__init__.py +0 -0
  92. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/jobs/helpers.py +0 -0
  93. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/jobs/llm_batch_job_polling.py +0 -0
  94. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/jobs/scheduler.py +0 -0
  95. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/jobs/types.py +0 -0
  96. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/__init__.py +0 -0
  97. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/anthropic.py +0 -0
  98. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/anthropic_client.py +0 -0
  99. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/aws_bedrock.py +0 -0
  100. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/azure_openai.py +0 -0
  101. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/azure_openai_constants.py +0 -0
  102. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/bedrock_client.py +0 -0
  103. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/cohere.py +0 -0
  104. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/deepseek.py +0 -0
  105. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/google_ai_client.py +0 -0
  106. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/google_constants.py +0 -0
  107. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/google_vertex_client.py +0 -0
  108. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/helpers.py +0 -0
  109. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/llm_api_tools.py +0 -0
  110. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/llm_client.py +0 -0
  111. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/llm_client_base.py +0 -0
  112. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/mistral.py +0 -0
  113. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/openai.py +0 -0
  114. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/llm_api/openai_client.py +0 -0
  115. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/README.md +0 -0
  116. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/__init__.py +0 -0
  117. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/chat_completion_proxy.py +0 -0
  118. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/constants.py +0 -0
  119. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/function_parser.py +0 -0
  120. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/grammars/__init__.py +0 -0
  121. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  122. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/grammars/json.gbnf +0 -0
  123. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  124. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/json_parser.py +0 -0
  125. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/koboldcpp/api.py +0 -0
  126. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/koboldcpp/settings.py +0 -0
  127. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llamacpp/api.py +0 -0
  128. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llamacpp/settings.py +0 -0
  129. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  130. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  131. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  132. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  133. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  134. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  135. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  136. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  137. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  138. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/lmstudio/api.py +0 -0
  139. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/lmstudio/settings.py +0 -0
  140. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/ollama/api.py +0 -0
  141. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/ollama/settings.py +0 -0
  142. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/settings/__init__.py +0 -0
  143. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  144. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/settings/settings.py +0 -0
  145. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/settings/simple.py +0 -0
  146. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/utils.py +0 -0
  147. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/vllm/api.py +0 -0
  148. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/webui/api.py +0 -0
  149. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/webui/legacy_api.py +0 -0
  150. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/webui/legacy_settings.py +0 -0
  151. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/local_llm/webui/settings.py +0 -0
  152. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/log.py +0 -0
  153. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/main.py +0 -0
  154. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/memory.py +0 -0
  155. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/openai_backcompat/__init__.py +0 -0
  156. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/openai_backcompat/openai_object.py +0 -0
  157. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/__all__.py +0 -0
  158. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/__init__.py +0 -0
  159. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/agent.py +0 -0
  160. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/agents_tags.py +0 -0
  161. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/base.py +0 -0
  162. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/block.py +0 -0
  163. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/block_history.py +0 -0
  164. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/blocks_agents.py +0 -0
  165. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/custom_columns.py +0 -0
  166. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/enums.py +0 -0
  167. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/errors.py +0 -0
  168. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/file.py +0 -0
  169. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/files_agents.py +0 -0
  170. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/group.py +0 -0
  171. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/groups_agents.py +0 -0
  172. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/groups_blocks.py +0 -0
  173. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/identities_agents.py +0 -0
  174. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/identities_blocks.py +0 -0
  175. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/identity.py +0 -0
  176. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/job.py +0 -0
  177. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/job_messages.py +0 -0
  178. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/llm_batch_items.py +0 -0
  179. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/llm_batch_job.py +0 -0
  180. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/mcp_server.py +0 -0
  181. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/message.py +0 -0
  182. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/mixins.py +0 -0
  183. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/organization.py +0 -0
  184. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/passage.py +0 -0
  185. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/provider.py +0 -0
  186. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/provider_trace.py +0 -0
  187. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/sandbox_config.py +0 -0
  188. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/source.py +0 -0
  189. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/sources_agents.py +0 -0
  190. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/sqlite_functions.py +0 -0
  191. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/step.py +0 -0
  192. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/tool.py +0 -0
  193. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/tools_agents.py +0 -0
  194. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/orm/user.py +0 -0
  195. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/__init__.py +0 -0
  196. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/context.py +0 -0
  197. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/events.py +0 -0
  198. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/metric_registry.py +0 -0
  199. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/metrics.py +0 -0
  200. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/resource.py +0 -0
  201. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/otel/tracing.py +0 -0
  202. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/__init__.py +0 -0
  203. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/anna_pa.txt +0 -0
  204. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/google_search_persona.txt +0 -0
  205. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/memgpt_doc.txt +0 -0
  206. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/memgpt_starter.txt +0 -0
  207. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/o1_persona.txt +0 -0
  208. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/sam.txt +0 -0
  209. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/sam_pov.txt +0 -0
  210. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  211. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
  212. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
  213. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/sqldb/test.db +0 -0
  214. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/personas/examples/voice_memory_persona.txt +0 -0
  215. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/plugins/README.md +0 -0
  216. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/plugins/__init__.py +0 -0
  217. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/plugins/defaults.py +0 -0
  218. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/plugins/plugins.py +0 -0
  219. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/__init__.py +0 -0
  220. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/gpt_summarize.py +0 -0
  221. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/gpt_system.py +0 -0
  222. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_base.txt +0 -0
  223. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_chat.txt +0 -0
  224. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  225. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  226. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  227. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_doc.txt +0 -0
  228. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  229. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  230. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  231. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  232. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  233. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  234. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  235. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
  236. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/memgpt_v2_chat.txt +0 -0
  237. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/react.txt +0 -0
  238. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/sleeptime.txt +0 -0
  239. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
  240. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/sleeptime_v2.txt +0 -0
  241. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/voice_chat.txt +0 -0
  242. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/voice_sleeptime.txt +0 -0
  243. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/prompts/system/workflow.txt +0 -0
  244. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/pytest.ini +0 -0
  245. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/block.py +0 -0
  246. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/embedding_config.py +0 -0
  247. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/embedding_config_overrides.py +0 -0
  248. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/enums.py +0 -0
  249. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/environment_variables.py +0 -0
  250. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/file.py +0 -0
  251. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/group.py +0 -0
  252. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/health.py +0 -0
  253. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/identity.py +0 -0
  254. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/job.py +0 -0
  255. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/letta_base.py +0 -0
  256. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/letta_message.py +0 -0
  257. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/letta_message_content.py +0 -0
  258. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/letta_request.py +0 -0
  259. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/letta_response.py +0 -0
  260. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/letta_stop_reason.py +0 -0
  261. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/llm_batch_job.py +0 -0
  262. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/llm_config.py +0 -0
  263. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/llm_config_overrides.py +0 -0
  264. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/mcp.py +0 -0
  265. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/memory.py +0 -0
  266. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/message.py +0 -0
  267. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/openai/chat_completion_request.py +0 -0
  268. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/openai/chat_completion_response.py +0 -0
  269. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/openai/chat_completions.py +0 -0
  270. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/openai/embedding_response.py +0 -0
  271. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/openai/openai.py +0 -0
  272. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/organization.py +0 -0
  273. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/passage.py +0 -0
  274. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/pip_requirement.py +0 -0
  275. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/provider_trace.py +0 -0
  276. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/providers.py +0 -0
  277. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/response_format.py +0 -0
  278. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/run.py +0 -0
  279. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/sandbox_config.py +0 -0
  280. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/source.py +0 -0
  281. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/step.py +0 -0
  282. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/tool.py +0 -0
  283. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/tool_execution_result.py +0 -0
  284. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/tool_rule.py +0 -0
  285. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/usage.py +0 -0
  286. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/schemas/user.py +0 -0
  287. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/__init__.py +0 -0
  288. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  289. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  290. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_base.py +0 -0
  291. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_block.py +0 -0
  292. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  293. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_message.py +0 -0
  294. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  295. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  296. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  297. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/__init__.py +0 -0
  298. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/constants.py +0 -0
  299. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/db.py +0 -0
  300. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/generate_openapi_schema.sh +0 -0
  301. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/__init__.py +0 -0
  302. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/app.py +0 -0
  303. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/auth/__init__.py +0 -0
  304. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/auth/index.py +0 -0
  305. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/auth_token.py +0 -0
  306. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/chat_completions_interface.py +0 -0
  307. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/interface.py +0 -0
  308. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/json_parser.py +0 -0
  309. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/__init__.py +0 -0
  310. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  311. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  312. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  313. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/agents.py +0 -0
  314. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  315. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
  316. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/groups.py +0 -0
  317. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/health.py +0 -0
  318. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/identities.py +0 -0
  319. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  320. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/llms.py +0 -0
  321. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/messages.py +0 -0
  322. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  323. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/providers.py +0 -0
  324. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/runs.py +0 -0
  325. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  326. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/sources.py +0 -0
  327. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/tags.py +0 -0
  328. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/telemetry.py +0 -0
  329. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/tools.py +0 -0
  330. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/users.py +0 -0
  331. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/routers/v1/voice.py +0 -0
  332. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/static_files.py +0 -0
  333. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/streaming_response.py +0 -0
  334. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/rest_api/utils.py +0 -0
  335. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/startup.sh +0 -0
  336. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/static_files/assets/index-048c9598.js +0 -0
  337. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  338. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/static_files/favicon.ico +0 -0
  339. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/static_files/index.html +0 -0
  340. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  341. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/utils.py +0 -0
  342. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/ws_api/__init__.py +0 -0
  343. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/ws_api/example_client.py +0 -0
  344. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/ws_api/interface.py +0 -0
  345. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/ws_api/protocol.py +0 -0
  346. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/server/ws_api/server.py +0 -0
  347. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/__init__.py +0 -0
  348. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/block_manager.py +0 -0
  349. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/context_window_calculator/__init__.py +0 -0
  350. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/context_window_calculator/context_window_calculator.py +0 -0
  351. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/context_window_calculator/token_counter.py +0 -0
  352. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_manager.py +0 -0
  353. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/__init__.py +0 -0
  354. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/chunker/__init__.py +0 -0
  355. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/chunker/llama_index_chunker.py +0 -0
  356. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/embedder/__init__.py +0 -0
  357. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/embedder/openai_embedder.py +0 -0
  358. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/file_processor.py +0 -0
  359. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/file_types.py +0 -0
  360. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/parser/__init__.py +0 -0
  361. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/parser/base_parser.py +0 -0
  362. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/parser/mistral_parser.py +0 -0
  363. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/file_processor/types.py +0 -0
  364. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/group_manager.py +0 -0
  365. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/helpers/tool_execution_helper.py +0 -0
  366. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/helpers/tool_parser_helper.py +0 -0
  367. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/identity_manager.py +0 -0
  368. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/job_manager.py +0 -0
  369. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/llm_batch_manager.py +0 -0
  370. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp/__init__.py +0 -0
  371. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp/base_client.py +0 -0
  372. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp/sse_client.py +0 -0
  373. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp/stdio_client.py +0 -0
  374. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp/streamable_http_client.py +0 -0
  375. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp/types.py +0 -0
  376. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/mcp_manager.py +0 -0
  377. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/message_manager.py +0 -0
  378. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/organization_manager.py +0 -0
  379. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/passage_manager.py +0 -0
  380. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/per_agent_lock_manager.py +0 -0
  381. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/provider_manager.py +0 -0
  382. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/sandbox_config_manager.py +0 -0
  383. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/source_manager.py +0 -0
  384. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/summarizer/__init__.py +0 -0
  385. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/summarizer/enums.py +0 -0
  386. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/summarizer/summarizer.py +0 -0
  387. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/telemetry_manager.py +0 -0
  388. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/__init__.py +0 -0
  389. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/builtin_tool_executor.py +0 -0
  390. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/composio_tool_executor.py +0 -0
  391. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/core_tool_executor.py +0 -0
  392. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/mcp_tool_executor.py +0 -0
  393. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/multi_agent_tool_executor.py +0 -0
  394. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/tool_execution_manager.py +0 -0
  395. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
  396. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/tool_executor.py +0 -0
  397. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_executor/tool_executor_base.py +0 -0
  398. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_manager.py +0 -0
  399. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_sandbox/__init__.py +0 -0
  400. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_sandbox/base.py +0 -0
  401. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
  402. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/tool_sandbox/local_sandbox.py +0 -0
  403. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/services/user_manager.py +0 -0
  404. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/settings.py +0 -0
  405. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/streaming_interface.py +0 -0
  406. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/streaming_utils.py +0 -0
  407. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/system.py +0 -0
  408. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/templates/__init__.py +0 -0
  409. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/templates/sandbox_code_file.py.j2 +0 -0
  410. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/templates/sandbox_code_file_async.py.j2 +0 -0
  411. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/templates/template_helper.py +0 -0
  412. {letta_nightly-0.8.6.dev20250627214853 → letta_nightly-0.8.7.dev20250627220731}/letta/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.8.6.dev20250627214853
3
+ Version: 0.8.7.dev20250627220731
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -1,6 +1,7 @@
1
1
  import os
2
2
 
3
- __version__ = "0.8.5"
3
+ __version__ = "0.8.7"
4
+
4
5
 
5
6
  if os.environ.get("LETTA_VERSION"):
6
7
  __version__ = os.environ["LETTA_VERSION"]
@@ -83,6 +83,7 @@ SEND_MESSAGE_TOOL_NAME = "send_message"
83
83
  # Base tools that cannot be edited, as they access agent state directly
84
84
  # Note that we don't include "conversation_search_date" for now
85
85
  BASE_TOOLS = [SEND_MESSAGE_TOOL_NAME, "conversation_search", "archival_memory_insert", "archival_memory_search"]
86
+ DEPRECATED_BASE_TOOLS = ["archival_memory_insert", "archival_memory_search"]
86
87
  # Base memory tools CAN be edited, and are added by default by the server
87
88
  BASE_MEMORY_TOOLS = ["core_memory_append", "core_memory_replace"]
88
89
  # New v2 collection of the base memory tools (effecitvely same as sleeptime set), to pair with memgpt_v2 prompt
@@ -129,7 +130,7 @@ MEMORY_TOOLS_LINE_NUMBER_PREFIX_REGEX = re.compile(
129
130
  BUILTIN_TOOLS = ["run_code", "web_search"]
130
131
 
131
132
  # Built in tools
132
- FILES_TOOLS = ["open_file", "close_file", "grep", "search_files"]
133
+ FILES_TOOLS = ["open_files", "grep_files", "search_files"]
133
134
 
134
135
  FILE_MEMORY_EXISTS_MESSAGE = "The following files are currently accessible in memory:"
135
136
  FILE_MEMORY_EMPTY_MESSAGE = (
@@ -1,30 +1,32 @@
1
- from typing import TYPE_CHECKING, List, Optional, Tuple
1
+ from typing import TYPE_CHECKING, List, Optional
2
+
3
+ from letta.functions.types import FileOpenRequest
2
4
 
3
5
  if TYPE_CHECKING:
4
6
  from letta.schemas.agent import AgentState
5
7
  from letta.schemas.file import FileMetadata
6
8
 
7
9
 
8
- async def open_file(agent_state: "AgentState", file_name: str, view_range: Optional[Tuple[int, int]]) -> str:
9
- """
10
- Open the file with name `file_name` and load the contents into files section in core memory.
10
+ async def open_files(agent_state: "AgentState", file_requests: List[FileOpenRequest], close_all_others: bool = False) -> str:
11
+ """Open one or more files and load their contents into files section in core memory. Maximum of 5 files can be opened simultaneously.
11
12
 
12
- Args:
13
- file_name (str): Name of the file to view. Required.
14
- view_range (Optional[Tuple[int, int]]): Optional tuple indicating range to view.
13
+ Examples:
14
+ Open single file (entire content):
15
+ file_requests = [FileOpenRequest(file_name="config.py")]
15
16
 
16
- Returns:
17
- str: A status message
18
- """
19
- raise NotImplementedError("Tool not implemented. Please contact the Letta team.")
17
+ Open multiple files with different view ranges:
18
+ file_requests = [
19
+ FileOpenRequest(file_name="config.py", offset=1, length=50), # Lines 1-50
20
+ FileOpenRequest(file_name="main.py", offset=100, length=100), # Lines 100-199
21
+ FileOpenRequest(file_name="utils.py") # Entire file
22
+ ]
20
23
 
21
-
22
- async def close_file(agent_state: "AgentState", file_name: str) -> str:
23
- """
24
- Close file with name `file_name` in files section in core memory.
24
+ Close all other files and open new ones:
25
+ open_files(agent_state, file_requests, close_all_others=True)
25
26
 
26
27
  Args:
27
- file_name (str): Name of the file to close.
28
+ file_requests (List[FileOpenRequest]): List of file open requests, each specifying file name and optional view range.
29
+ close_all_others (bool): If True, closes all other currently open files first. Defaults to False.
28
30
 
29
31
  Returns:
30
32
  str: A status message
@@ -32,7 +34,7 @@ async def close_file(agent_state: "AgentState", file_name: str) -> str:
32
34
  raise NotImplementedError("Tool not implemented. Please contact the Letta team.")
33
35
 
34
36
 
35
- async def grep(
37
+ async def grep_files(
36
38
  agent_state: "AgentState",
37
39
  pattern: str,
38
40
  include: Optional[str] = None,
@@ -45,7 +47,7 @@ async def grep(
45
47
  pattern (str): Keyword or regex pattern to search within file contents.
46
48
  include (Optional[str]): Optional keyword or regex pattern to filter filenames to include in the search.
47
49
  context_lines (Optional[int]): Number of lines of context to show before and after each match.
48
- Equivalent to `-C` in grep. Defaults to 3.
50
+ Equivalent to `-C` in grep_files. Defaults to 3.
49
51
 
50
52
  Returns:
51
53
  str: Matching lines with optional surrounding context or a summary output.
@@ -9,6 +9,56 @@ from typing_extensions import Literal
9
9
 
10
10
  from letta.constants import REQUEST_HEARTBEAT_DESCRIPTION, REQUEST_HEARTBEAT_PARAM
11
11
  from letta.functions.mcp_client.types import MCPTool
12
+ from letta.log import get_logger
13
+
14
+ logger = get_logger(__name__)
15
+
16
+
17
+ def validate_google_style_docstring(function):
18
+ """Validate that a function's docstring follows Google Python style format.
19
+
20
+ Args:
21
+ function: The function to validate
22
+
23
+ Raises:
24
+ ValueError: If the docstring is not in Google Python style format
25
+ """
26
+ if not function.__doc__:
27
+ raise ValueError(
28
+ f"Function '{function.__name__}' has no docstring. Expected Google Python style docstring with Args and Returns sections."
29
+ )
30
+
31
+ docstring = function.__doc__.strip()
32
+
33
+ # Basic Google style requirements:
34
+ # 1. Should have Args: section if function has parameters (excluding self, agent_state)
35
+ # 2. Should have Returns: section if function returns something other than None
36
+ # 3. Args and Returns sections should be properly formatted
37
+
38
+ sig = inspect.signature(function)
39
+ has_params = any(param.name not in ["self", "agent_state"] for param in sig.parameters.values())
40
+
41
+ # Check for Args section if function has parameters
42
+ if has_params and "Args:" not in docstring:
43
+ raise ValueError(f"Function '{function.__name__}' with parameters must have 'Args:' section in Google Python style docstring")
44
+
45
+ # NOTE: No check for Returns section - this is irrelevant to the LLM
46
+ # In proper Google Python format, the Returns: is required
47
+
48
+ # Validate Args section format if present
49
+ if "Args:" in docstring:
50
+ args_start = docstring.find("Args:")
51
+ args_end = docstring.find("Returns:", args_start) if "Returns:" in docstring[args_start:] else len(docstring)
52
+ args_section = docstring[args_start:args_end].strip()
53
+
54
+ # Check that each parameter is documented
55
+ for param in sig.parameters.values():
56
+ if param.name in ["self", "agent_state"]:
57
+ continue
58
+ if f"{param.name} (" not in args_section and f"{param.name}:" not in args_section:
59
+ raise ValueError(
60
+ f"Function '{function.__name__}' parameter '{param.name}' not documented in Args section of Google Python style docstring"
61
+ )
12
62
 
13
63
 
14
64
  def is_optional(annotation):
@@ -277,6 +327,20 @@ def pydantic_model_to_json_schema(model: Type[BaseModel]) -> dict:
277
327
  "description": prop["description"],
278
328
  }
279
329
 
330
+ # Handle the case where the property uses anyOf (e.g., Optional types)
331
+ if "anyOf" in prop:
332
+ # For Optional types, extract the non-null type
333
+ non_null_types = [t for t in prop["anyOf"] if t.get("type") != "null"]
334
+ if len(non_null_types) == 1:
335
+ # Simple Optional[T] case - use the non-null type
336
+ return {
337
+ "type": non_null_types[0]["type"],
338
+ "description": prop["description"],
339
+ }
340
+ else:
341
+ # Complex anyOf case - not supported yet
342
+ raise ValueError(f"Complex anyOf patterns are not supported: {prop}")
343
+
280
344
  # If it's a regular property with a direct type (e.g., string, number)
281
345
  return {
282
346
  "type": "string" if prop["type"] == "string" else prop["type"],
@@ -344,7 +408,18 @@ def pydantic_model_to_json_schema(model: Type[BaseModel]) -> dict:
344
408
  return clean_schema(schema_part=schema, full_schema=schema)
345
409
 
346
410
 
347
- def generate_schema(function, name: Optional[str] = None, description: Optional[str] = None) -> dict:
411
+ def generate_schema(function, name: Optional[str] = None, description: Optional[str] = None, tool_id: Optional[str] = None) -> dict:
412
+ # Validate that the function has a Google Python style docstring
413
+ try:
414
+ validate_google_style_docstring(function)
415
+ except ValueError:
416
+ logger.warning(
417
+ f"Function `{function.__name__}` in module `{function.__module__}` "
418
+ f"{'(tool_id=' + tool_id + ') ' if tool_id else ''}"
419
+ f"is not in Google style docstring format. "
420
+ f"Docstring received:\n{repr(function.__doc__[:200]) if function.__doc__ else 'None'}"
421
+ )
422
+
348
423
  # Get the signature of the function
349
424
  sig = inspect.signature(function)
350
425
 
@@ -353,10 +428,19 @@ def generate_schema(function, name: Optional[str] = None, description: Optional[
353
428
 
354
429
  if not description:
355
430
  # Support multiline docstrings for complex functions, TODO (cliandy): consider having this as a setting
356
- if docstring.long_description:
431
+ # Always prefer combining short + long description when both exist
432
+ if docstring.short_description and docstring.long_description:
433
+ description = f"{docstring.short_description}\n\n{docstring.long_description}"
434
+ elif docstring.short_description:
435
+ description = docstring.short_description
436
+ elif docstring.long_description:
357
437
  description = docstring.long_description
358
438
  else:
359
- description = docstring.short_description
439
+ description = "No description available"
440
+
441
+ examples_section = extract_examples_section(function.__doc__)
442
+ if examples_section and "Examples:" not in description:
443
+ description = f"{description}\n\n{examples_section}"
360
444
 
361
445
  # Prepare the schema dictionary
362
446
  schema = {
@@ -443,6 +527,38 @@ def generate_schema(function, name: Optional[str] = None, description: Optional[
443
527
  return schema
444
528
 
445
529
 
530
+ def extract_examples_section(docstring: Optional[str]) -> Optional[str]:
531
+ """Extracts the 'Examples:' section from a Google-style docstring.
532
+
533
+ Args:
534
+ docstring (Optional[str]): The full docstring of a function.
535
+
536
+ Returns:
537
+ Optional[str]: The extracted examples section, or None if not found.
538
+ """
539
+ if not docstring or "Examples:" not in docstring:
540
+ return None
541
+
542
+ lines = docstring.strip().splitlines()
543
+ in_examples = False
544
+ examples_lines = []
545
+
546
+ for line in lines:
547
+ stripped = line.strip()
548
+
549
+ if not in_examples and stripped.startswith("Examples:"):
550
+ in_examples = True
551
+ examples_lines.append(line)
552
+ continue
553
+
554
+ if in_examples:
555
+ if stripped and not line.startswith(" ") and stripped.endswith(":"):
556
+ break
557
+ examples_lines.append(line)
558
+
559
+ return "\n".join(examples_lines).strip() if examples_lines else None
560
+
561
+
446
562
  def generate_schema_from_args_schema_v2(
447
563
  args_schema: Type[BaseModel], name: Optional[str] = None, description: Optional[str] = None, append_heartbeat: bool = True
448
564
  ) -> Dict[str, Any]:
@@ -0,0 +1,18 @@
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, Field
4
+
5
+
6
+ class SearchTask(BaseModel):
7
+ query: str = Field(description="Search query for web search")
8
+ question: str = Field(description="Question to answer from search results, considering full conversation context")
9
+
10
+
11
+ class FileOpenRequest(BaseModel):
12
+ file_name: str = Field(description="Name of the file to open")
13
+ offset: Optional[int] = Field(
14
+ default=None, description="Optional starting line number (1-indexed). If not specified, starts from beginning of file."
15
+ )
16
+ length: Optional[int] = Field(
17
+ default=None, description="Optional number of lines to view from offset. If not specified, views to end of file."
18
+ )
@@ -141,7 +141,11 @@ class SleeptimeMultiAgentV2(BaseAgent):
141
141
  include_return_message_types: Optional[List[MessageType]] = None,
142
142
  ):
143
143
  response = await self.step(
144
- input_messages, max_steps, use_assistant_message, request_start_timestamp_ns, include_return_message_types
144
+ input_messages=input_messages,
145
+ max_steps=max_steps,
146
+ use_assistant_message=use_assistant_message,
147
+ request_start_timestamp_ns=request_start_timestamp_ns,
148
+ include_return_message_types=include_return_message_types,
145
149
  )
146
150
 
147
151
  for message in response.messages:
@@ -183,6 +183,7 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base):
183
183
  identifier_keys: Optional[List[str]] = None,
184
184
  identity_id: Optional[str] = None,
185
185
  query_options: Sequence[ORMOption] | None = None, # ← new
186
+ has_feedback: Optional[bool] = None,
186
187
  **kwargs,
187
188
  ) -> List["SqlalchemyBase"]:
188
189
  """
@@ -281,6 +282,7 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base):
281
282
  identifier_keys: Optional[List[str]] = None,
282
283
  identity_id: Optional[str] = None,
283
284
  check_is_deleted: bool = False,
285
+ has_feedback: Optional[bool] = None,
284
286
  **kwargs,
285
287
  ):
286
288
  """
@@ -337,6 +339,13 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base):
337
339
  if end_date:
338
340
  query = query.filter(cls.created_at < end_date)
339
341
 
342
+ # Feedback filtering
343
+ if has_feedback is not None and hasattr(cls, "feedback"):
344
+ if has_feedback:
345
+ query = query.filter(cls.feedback.isnot(None))
346
+ else:
347
+ query = query.filter(cls.feedback.is_(None))
348
+
340
349
  # Handle pagination based on before/after
341
350
  if before_obj or after_obj:
342
351
  conditions = []
@@ -152,9 +152,7 @@ class CreateAgent(BaseModel, validate_assignment=True): #
152
152
  initial_message_sequence: Optional[List[MessageCreate]] = Field(
153
153
  None, description="The initial set of messages to put in the agent's in-context memory."
154
154
  )
155
- include_base_tools: bool = Field(
156
- True, description="If true, attaches the Letta core tools (e.g. archival_memory and core_memory related functions)."
157
- )
155
+ include_base_tools: bool = Field(True, description="If true, attaches the Letta core tools (e.g. core_memory related functions).")
158
156
  include_multi_agent_tools: bool = Field(
159
157
  False, description="If true, attaches the Letta multi-agent tools (e.g. sending a message to another agent)."
160
158
  )
@@ -7,6 +7,7 @@ from letta.orm.errors import NoResultFound
7
7
  from letta.schemas.step import Step
8
8
  from letta.server.rest_api.utils import get_letta_server
9
9
  from letta.server.server import SyncServer
10
+ from letta.services.step_manager import FeedbackType
10
11
 
11
12
  router = APIRouter(prefix="/steps", tags=["steps"])
12
13
 
@@ -23,6 +24,7 @@ async def list_steps(
23
24
  agent_id: Optional[str] = Query(None, description="Filter by the ID of the agent that performed the step"),
24
25
  trace_ids: Optional[list[str]] = Query(None, description="Filter by trace ids returned by the server"),
25
26
  feedback: Optional[Literal["positive", "negative"]] = Query(None, description="Filter by feedback"),
27
+ has_feedback: Optional[bool] = Query(None, description="Filter by whether steps have feedback (true) or not (false)"),
26
28
  tags: Optional[list[str]] = Query(None, description="Filter by tags"),
27
29
  server: SyncServer = Depends(get_letta_server),
28
30
  actor_id: Optional[str] = Header(None, alias="user_id"),
@@ -49,6 +51,7 @@ async def list_steps(
49
51
  agent_id=agent_id,
50
52
  trace_ids=trace_ids,
51
53
  feedback=feedback,
54
+ has_feedback=has_feedback,
52
55
  tags=tags,
53
56
  )
54
57
 
@@ -72,7 +75,7 @@ async def retrieve_step(
72
75
  @router.patch("/{step_id}/feedback", response_model=Step, operation_id="add_feedback")
73
76
  async def add_feedback(
74
77
  step_id: str,
75
- feedback: Optional[Literal["positive", "negative"]],
78
+ feedback: Optional[FeedbackType],
76
79
  actor_id: Optional[str] = Header(None, alias="user_id"),
77
80
  server: SyncServer = Depends(get_letta_server),
78
81
  ):
@@ -1496,7 +1496,7 @@ class SyncServer(Server):
1496
1496
  await self.agent_manager.attach_block_async(agent_id=main_agent.id, block_id=block.id, actor=actor)
1497
1497
 
1498
1498
  if clear_history and block.value != "":
1499
- block = await self.block_manager.update_block_async(block_id=block.id, block=BlockUpdate(value=""))
1499
+ block = await self.block_manager.update_block_async(block_id=block.id, block_update=BlockUpdate(value=""), actor=actor)
1500
1500
 
1501
1501
  request = CreateAgent(
1502
1502
  name=main_agent.name + "-doc-sleeptime",
@@ -16,6 +16,7 @@ from letta.constants import (
16
16
  BASE_VOICE_SLEEPTIME_CHAT_TOOLS,
17
17
  BASE_VOICE_SLEEPTIME_TOOLS,
18
18
  DEFAULT_TIMEZONE,
19
+ DEPRECATED_BASE_TOOLS,
19
20
  FILES_TOOLS,
20
21
  MULTI_AGENT_TOOLS,
21
22
  )
@@ -77,6 +78,7 @@ from letta.services.helpers.agent_manager_helper import (
77
78
  build_agent_passage_query,
78
79
  build_passage_query,
79
80
  build_source_passage_query,
81
+ calculate_base_tools,
80
82
  check_supports_structured_output,
81
83
  compile_system_message,
82
84
  derive_system_message,
@@ -261,13 +263,13 @@ class AgentManager:
261
263
  elif agent_create.enable_sleeptime:
262
264
  tool_names |= set(BASE_SLEEPTIME_CHAT_TOOLS)
263
265
  elif agent_create.agent_type == AgentType.memgpt_v2_agent:
264
- tool_names |= set(BASE_TOOLS + BASE_MEMORY_TOOLS_V2)
266
+ tool_names |= calculate_base_tools(is_v2=True)
265
267
  elif agent_create.agent_type == AgentType.react_agent:
266
268
  pass # no default tools
267
269
  elif agent_create.agent_type == AgentType.workflow_agent:
268
270
  pass # no default tools
269
271
  else:
270
- tool_names |= set(BASE_TOOLS + BASE_MEMORY_TOOLS)
272
+ tool_names |= calculate_base_tools(is_v2=False)
271
273
  if agent_create.include_multi_agent_tools:
272
274
  tool_names |= set(MULTI_AGENT_TOOLS)
273
275
 
@@ -428,16 +430,19 @@ class AgentManager:
428
430
  elif agent_create.enable_sleeptime:
429
431
  tool_names |= set(BASE_SLEEPTIME_CHAT_TOOLS)
430
432
  elif agent_create.agent_type == AgentType.memgpt_v2_agent:
431
- tool_names |= set(BASE_TOOLS + BASE_MEMORY_TOOLS_V2)
433
+ tool_names |= calculate_base_tools(is_v2=True)
432
434
  elif agent_create.agent_type == AgentType.react_agent:
433
435
  pass # no default tools
434
436
  elif agent_create.agent_type == AgentType.workflow_agent:
435
437
  pass # no default tools
436
438
  else:
437
- tool_names |= set(BASE_TOOLS + BASE_MEMORY_TOOLS)
439
+ tool_names |= calculate_base_tools(is_v2=False)
438
440
  if agent_create.include_multi_agent_tools:
439
441
  tool_names |= set(MULTI_AGENT_TOOLS)
440
442
 
443
+ # take out the deprecated tool names
444
+ tool_names.difference_update(set(DEPRECATED_BASE_TOOLS))
445
+
441
446
  supplied_ids = set(agent_create.tool_ids or [])
442
447
 
443
448
  source_ids = agent_create.source_ids or []
@@ -124,8 +124,8 @@ class LineChunker:
124
124
  else:
125
125
  line_offset = 0
126
126
 
127
- # Add line numbers for all strategies
128
- content_lines = [f"{i + line_offset}: {line}" for i, line in enumerate(content_lines)]
127
+ # Add line numbers for all strategies (1-indexed for user display)
128
+ content_lines = [f"{i + line_offset + 1}: {line}" for i, line in enumerate(content_lines)]
129
129
 
130
130
  # Add metadata about total chunks
131
131
  if add_metadata:
@@ -133,7 +133,10 @@ class LineChunker:
133
133
  "sentences" if strategy == ChunkingStrategy.DOCUMENTATION else "chunks" if strategy == ChunkingStrategy.PROSE else "lines"
134
134
  )
135
135
  if start is not None and end is not None:
136
- content_lines.insert(0, f"[Viewing {chunk_type} {start} to {end-1} (out of {total_chunks} {chunk_type})]")
136
+ # Display 1-indexed ranges for users
137
+ start_display = start + 1
138
+ end_display = end
139
+ content_lines.insert(0, f"[Viewing {chunk_type} {start_display} to {end_display} (out of {total_chunks} {chunk_type})]")
137
140
  else:
138
141
  content_lines.insert(0, f"[Viewing file start (out of {total_chunks} {chunk_type})]")
139
142
 
@@ -283,6 +283,40 @@ class FileAgentManager:
283
283
  await session.execute(stmt)
284
284
  await session.commit()
285
285
 
286
+ @enforce_types
287
+ @trace_method
288
+ async def close_all_other_files(self, *, agent_id: str, keep_file_names: List[str], actor: PydanticUser) -> List[str]:
289
+ """Close every open file for this agent except those in keep_file_names.
290
+
291
+ Args:
292
+ agent_id: ID of the agent
293
+ keep_file_names: List of file names to keep open
294
+ actor: User performing the action
295
+
296
+ Returns:
297
+ List of file names that were closed
298
+ """
299
+ async with db_registry.async_session() as session:
300
+ stmt = (
301
+ update(FileAgentModel)
302
+ .where(
303
+ and_(
304
+ FileAgentModel.agent_id == agent_id,
305
+ FileAgentModel.organization_id == actor.organization_id,
306
+ FileAgentModel.is_open.is_(True),
307
+ # Only add the NOT IN filter when there are names to keep
308
+ ~FileAgentModel.file_name.in_(keep_file_names) if keep_file_names else True,
309
+ )
310
+ )
311
+ .values(is_open=False, visible_content=None)
312
+ .returning(FileAgentModel.file_name) # Gets the names we closed
313
+ .execution_options(synchronize_session=False) # No need to sync ORM state
314
+ )
315
+
316
+ closed_file_names = [row.file_name for row in (await session.execute(stmt))]
317
+ await session.commit()
318
+ return closed_file_names
319
+
286
320
  @enforce_types
287
321
  @trace_method
288
322
  async def enforce_max_open_files_and_open(
@@ -1,12 +1,20 @@
1
1
  from datetime import datetime
2
- from typing import List, Literal, Optional
2
+ from typing import List, Literal, Optional, Set
3
3
 
4
4
  import numpy as np
5
5
  from sqlalchemy import Select, and_, asc, desc, func, literal, nulls_last, or_, select, union_all
6
6
  from sqlalchemy.sql.expression import exists
7
7
 
8
8
  from letta import system
9
- from letta.constants import IN_CONTEXT_MEMORY_KEYWORD, MAX_EMBEDDING_DIM, STRUCTURED_OUTPUT_MODELS
9
+ from letta.constants import (
10
+ BASE_MEMORY_TOOLS,
11
+ BASE_MEMORY_TOOLS_V2,
12
+ BASE_TOOLS,
13
+ DEPRECATED_BASE_TOOLS,
14
+ IN_CONTEXT_MEMORY_KEYWORD,
15
+ MAX_EMBEDDING_DIM,
16
+ STRUCTURED_OUTPUT_MODELS,
17
+ )
10
18
  from letta.embeddings import embedding_model
11
19
  from letta.helpers import ToolRulesSolver
12
20
  from letta.helpers.datetime_helpers import format_datetime, get_local_time, get_local_time_fast
@@ -1038,3 +1046,10 @@ def build_agent_passage_query(
1038
1046
  query = query.order_by(AgentPassage.created_at.desc(), AgentPassage.id.asc())
1039
1047
 
1040
1048
  return query
1049
+
1050
+
1051
+ def calculate_base_tools(is_v2: bool) -> Set[str]:
1052
+ if is_v2:
1053
+ return (set(BASE_TOOLS) - set(DEPRECATED_BASE_TOOLS)) | set(BASE_MEMORY_TOOLS_V2)
1054
+ else:
1055
+ return (set(BASE_TOOLS) - set(DEPRECATED_BASE_TOOLS)) | set(BASE_MEMORY_TOOLS)
@@ -1,4 +1,5 @@
1
1
  from datetime import datetime
2
+ from enum import Enum
2
3
  from typing import List, Literal, Optional
3
4
 
4
5
  from sqlalchemy import select
@@ -18,6 +19,11 @@ from letta.server.db import db_registry
18
19
  from letta.utils import enforce_types
19
20
 
20
21
 
22
+ class FeedbackType(str, Enum):
23
+ POSITIVE = "positive"
24
+ NEGATIVE = "negative"
25
+
26
+
21
27
  class StepManager:
22
28
 
23
29
  @enforce_types
@@ -35,6 +41,7 @@ class StepManager:
35
41
  agent_id: Optional[str] = None,
36
42
  trace_ids: Optional[list[str]] = None,
37
43
  feedback: Optional[Literal["positive", "negative"]] = None,
44
+ has_feedback: Optional[bool] = None,
38
45
  ) -> List[PydanticStep]:
39
46
  """List all jobs with optional pagination and status filter."""
40
47
  async with db_registry.async_session() as session:
@@ -55,6 +62,7 @@ class StepManager:
55
62
  end_date=end_date,
56
63
  limit=limit,
57
64
  ascending=True if order == "asc" else False,
65
+ has_feedback=has_feedback,
58
66
  **filter_kwargs,
59
67
  )
60
68
  return [step.to_pydantic() for step in steps]
@@ -154,9 +162,7 @@ class StepManager:
154
162
 
155
163
  @enforce_types
156
164
  @trace_method
157
- async def add_feedback_async(
158
- self, step_id: str, feedback: Optional[Literal["positive", "negative"]], actor: PydanticUser
159
- ) -> PydanticStep:
165
+ async def add_feedback_async(self, step_id: str, feedback: Optional[FeedbackType], actor: PydanticUser) -> PydanticStep:
160
166
  async with db_registry.async_session() as session:
161
167
  step = await StepModel.read_async(db_session=session, identifier=step_id, actor=actor)
162
168
  if not step:
@@ -250,6 +256,7 @@ class StepManager:
250
256
  return job
251
257
 
252
258
 
259
+ # noinspection PyTypeChecker
253
260
  @singleton
254
261
  class NoopStepManager(StepManager):
255
262
  """
@@ -292,29 +299,4 @@ class NoopStepManager(StepManager):
292
299
  job_id: Optional[str] = None,
293
300
  step_id: Optional[str] = None,
294
301
  ) -> PydanticStep:
295
- step_data = {
296
- "origin": None,
297
- "organization_id": actor.organization_id,
298
- "agent_id": agent_id,
299
- "provider_id": provider_id,
300
- "provider_name": provider_name,
301
- "provider_category": provider_category,
302
- "model": model,
303
- "model_endpoint": model_endpoint,
304
- "context_window_limit": context_window_limit,
305
- "completion_tokens": usage.completion_tokens,
306
- "prompt_tokens": usage.prompt_tokens,
307
- "total_tokens": usage.total_tokens,
308
- "job_id": job_id,
309
- "tags": [],
310
- "tid": None,
311
- "trace_id": get_trace_id(), # Get the current trace ID
312
- }
313
- if step_id:
314
- step_data["id"] = step_id
315
- async with db_registry.async_session() as session:
316
- if job_id:
317
- await self._verify_job_access_async(session, job_id, actor, access=["write"])
318
- new_step = StepModel(**step_data)
319
- await new_step.create_async(session)
320
- return new_step.to_pydantic()
302
+ return