letta-nightly 0.8.12.dev20250710104356__tar.gz → 0.8.13.dev20250711104347__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 (416) hide show
  1. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/PKG-INFO +4 -4
  2. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/__init__.py +1 -1
  3. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/base_agent.py +25 -6
  4. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/letta_agent.py +34 -8
  5. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/ast_parsers.py +2 -1
  6. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/json_helpers.py +2 -0
  7. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/pinecone_utils.py +33 -6
  8. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/jobs/scheduler.py +23 -30
  9. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/metric_registry.py +24 -2
  10. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/enums.py +8 -0
  11. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/tool.py +5 -8
  12. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/app.py +4 -1
  13. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/agents.py +65 -2
  14. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/sources.py +33 -9
  15. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/agent_manager.py +38 -7
  16. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_manager.py +49 -5
  17. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/file_processor.py +5 -0
  18. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/helpers/tool_parser_helper.py +2 -2
  19. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/job_manager.py +35 -20
  20. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_sandbox/local_sandbox.py +6 -3
  21. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/templates/sandbox_code_file.py.j2 +25 -1
  22. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/templates/sandbox_code_file_async.py.j2 +25 -2
  23. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/pyproject.toml +5 -7
  24. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/LICENSE +0 -0
  25. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/README.md +0 -0
  26. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agent.py +0 -0
  27. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/__init__.py +0 -0
  28. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/ephemeral_agent.py +0 -0
  29. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/ephemeral_summary_agent.py +0 -0
  30. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/exceptions.py +0 -0
  31. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/helpers.py +0 -0
  32. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/letta_agent_batch.py +0 -0
  33. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/voice_agent.py +0 -0
  34. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/agents/voice_sleeptime_agent.py +0 -0
  35. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/cli/cli.py +0 -0
  36. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/cli/cli_load.py +0 -0
  37. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/client/__init__.py +0 -0
  38. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/client/client.py +0 -0
  39. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/client/streaming.py +0 -0
  40. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/client/utils.py +0 -0
  41. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/config.py +0 -0
  42. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/constants.py +0 -0
  43. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/data_sources/__init__.py +0 -0
  44. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/data_sources/connectors.py +0 -0
  45. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/data_sources/connectors_helper.py +0 -0
  46. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/data_sources/redis_client.py +0 -0
  47. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/embeddings.py +0 -0
  48. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/errors.py +0 -0
  49. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/__init__.py +0 -0
  50. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/async_composio_toolset.py +0 -0
  51. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/composio_helpers.py +0 -0
  52. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/function_sets/base.py +0 -0
  53. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/function_sets/builtin.py +0 -0
  54. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/function_sets/extras.py +0 -0
  55. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/function_sets/files.py +0 -0
  56. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/function_sets/multi_agent.py +0 -0
  57. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/function_sets/voice.py +0 -0
  58. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/functions.py +0 -0
  59. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/helpers.py +0 -0
  60. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/interface.py +0 -0
  61. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/mcp_client/__init__.py +0 -0
  62. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/mcp_client/base_client.py +0 -0
  63. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/mcp_client/exceptions.py +0 -0
  64. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/mcp_client/sse_client.py +0 -0
  65. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/mcp_client/stdio_client.py +0 -0
  66. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/mcp_client/types.py +0 -0
  67. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/prompts.py +0 -0
  68. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/schema_generator.py +0 -0
  69. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/functions/types.py +0 -0
  70. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/groups/dynamic_multi_agent.py +0 -0
  71. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/groups/helpers.py +0 -0
  72. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/groups/round_robin_multi_agent.py +0 -0
  73. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/groups/sleeptime_multi_agent.py +0 -0
  74. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/groups/sleeptime_multi_agent_v2.py +0 -0
  75. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/groups/supervisor_multi_agent.py +0 -0
  76. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/__init__.py +0 -0
  77. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/composio_helpers.py +0 -0
  78. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/converters.py +0 -0
  79. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/datetime_helpers.py +0 -0
  80. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/decorators.py +0 -0
  81. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/message_helper.py +0 -0
  82. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/singleton.py +0 -0
  83. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/tool_execution_helper.py +0 -0
  84. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/helpers/tool_rule_solver.py +0 -0
  85. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/humans/__init__.py +0 -0
  86. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/humans/examples/basic.txt +0 -0
  87. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/humans/examples/cs_phd.txt +0 -0
  88. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/interface.py +0 -0
  89. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/interfaces/__init__.py +0 -0
  90. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/interfaces/anthropic_streaming_interface.py +0 -0
  91. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  92. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/interfaces/openai_streaming_interface.py +0 -0
  93. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/interfaces/utils.py +0 -0
  94. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/jobs/__init__.py +0 -0
  95. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/jobs/helpers.py +0 -0
  96. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/jobs/llm_batch_job_polling.py +0 -0
  97. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/jobs/types.py +0 -0
  98. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/__init__.py +0 -0
  99. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/anthropic.py +0 -0
  100. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/anthropic_client.py +0 -0
  101. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/aws_bedrock.py +0 -0
  102. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/azure_openai.py +0 -0
  103. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/azure_openai_constants.py +0 -0
  104. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/bedrock_client.py +0 -0
  105. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/cohere.py +0 -0
  106. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/deepseek.py +0 -0
  107. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/google_ai_client.py +0 -0
  108. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/google_constants.py +0 -0
  109. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/google_vertex_client.py +0 -0
  110. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/helpers.py +0 -0
  111. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/llm_api_tools.py +0 -0
  112. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/llm_client.py +0 -0
  113. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/llm_client_base.py +0 -0
  114. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/mistral.py +0 -0
  115. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/openai.py +0 -0
  116. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/llm_api/openai_client.py +0 -0
  117. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/README.md +0 -0
  118. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/__init__.py +0 -0
  119. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/chat_completion_proxy.py +0 -0
  120. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/constants.py +0 -0
  121. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/function_parser.py +0 -0
  122. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/grammars/__init__.py +0 -0
  123. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  124. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/grammars/json.gbnf +0 -0
  125. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  126. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/json_parser.py +0 -0
  127. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/koboldcpp/api.py +0 -0
  128. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/koboldcpp/settings.py +0 -0
  129. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llamacpp/api.py +0 -0
  130. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llamacpp/settings.py +0 -0
  131. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  132. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  133. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  134. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  135. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  136. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  137. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  138. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  139. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  140. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/lmstudio/api.py +0 -0
  141. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/lmstudio/settings.py +0 -0
  142. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/ollama/api.py +0 -0
  143. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/ollama/settings.py +0 -0
  144. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/settings/__init__.py +0 -0
  145. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  146. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/settings/settings.py +0 -0
  147. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/settings/simple.py +0 -0
  148. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/utils.py +0 -0
  149. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/vllm/api.py +0 -0
  150. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/webui/api.py +0 -0
  151. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/webui/legacy_api.py +0 -0
  152. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/webui/legacy_settings.py +0 -0
  153. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/local_llm/webui/settings.py +0 -0
  154. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/log.py +0 -0
  155. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/main.py +0 -0
  156. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/memory.py +0 -0
  157. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/openai_backcompat/__init__.py +0 -0
  158. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/openai_backcompat/openai_object.py +0 -0
  159. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/__all__.py +0 -0
  160. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/__init__.py +0 -0
  161. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/agent.py +0 -0
  162. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/agents_tags.py +0 -0
  163. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/base.py +0 -0
  164. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/block.py +0 -0
  165. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/block_history.py +0 -0
  166. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/blocks_agents.py +0 -0
  167. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/custom_columns.py +0 -0
  168. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/enums.py +0 -0
  169. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/errors.py +0 -0
  170. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/file.py +0 -0
  171. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/files_agents.py +0 -0
  172. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/group.py +0 -0
  173. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/groups_agents.py +0 -0
  174. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/groups_blocks.py +0 -0
  175. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/identities_agents.py +0 -0
  176. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/identities_blocks.py +0 -0
  177. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/identity.py +0 -0
  178. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/job.py +0 -0
  179. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/job_messages.py +0 -0
  180. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/llm_batch_items.py +0 -0
  181. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/llm_batch_job.py +0 -0
  182. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/mcp_server.py +0 -0
  183. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/message.py +0 -0
  184. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/mixins.py +0 -0
  185. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/organization.py +0 -0
  186. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/passage.py +0 -0
  187. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/provider.py +0 -0
  188. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/provider_trace.py +0 -0
  189. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/sandbox_config.py +0 -0
  190. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/source.py +0 -0
  191. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/sources_agents.py +0 -0
  192. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/sqlalchemy_base.py +0 -0
  193. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/sqlite_functions.py +0 -0
  194. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/step.py +0 -0
  195. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/tool.py +0 -0
  196. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/tools_agents.py +0 -0
  197. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/orm/user.py +0 -0
  198. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/__init__.py +0 -0
  199. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/context.py +0 -0
  200. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/events.py +0 -0
  201. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/metrics.py +0 -0
  202. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/resource.py +0 -0
  203. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/otel/tracing.py +0 -0
  204. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/__init__.py +0 -0
  205. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/anna_pa.txt +0 -0
  206. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/google_search_persona.txt +0 -0
  207. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/memgpt_doc.txt +0 -0
  208. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/memgpt_starter.txt +0 -0
  209. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/o1_persona.txt +0 -0
  210. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/sam.txt +0 -0
  211. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/sam_pov.txt +0 -0
  212. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  213. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
  214. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
  215. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/sqldb/test.db +0 -0
  216. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/personas/examples/voice_memory_persona.txt +0 -0
  217. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/plugins/README.md +0 -0
  218. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/plugins/__init__.py +0 -0
  219. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/plugins/defaults.py +0 -0
  220. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/plugins/plugins.py +0 -0
  221. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/__init__.py +0 -0
  222. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/gpt_summarize.py +0 -0
  223. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/gpt_system.py +0 -0
  224. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_base.txt +0 -0
  225. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_chat.txt +0 -0
  226. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  227. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  228. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  229. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_doc.txt +0 -0
  230. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  231. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  232. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  233. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  234. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  235. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  236. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  237. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
  238. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/memgpt_v2_chat.txt +0 -0
  239. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/react.txt +0 -0
  240. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/sleeptime.txt +0 -0
  241. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
  242. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/sleeptime_v2.txt +0 -0
  243. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/summary_system_prompt.txt +0 -0
  244. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/voice_chat.txt +0 -0
  245. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/voice_sleeptime.txt +0 -0
  246. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/prompts/system/workflow.txt +0 -0
  247. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/pytest.ini +0 -0
  248. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/agent.py +0 -0
  249. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/block.py +0 -0
  250. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/embedding_config.py +0 -0
  251. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/embedding_config_overrides.py +0 -0
  252. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/environment_variables.py +0 -0
  253. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/file.py +0 -0
  254. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/group.py +0 -0
  255. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/health.py +0 -0
  256. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/identity.py +0 -0
  257. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/job.py +0 -0
  258. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/letta_base.py +0 -0
  259. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/letta_message.py +0 -0
  260. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/letta_message_content.py +0 -0
  261. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/letta_request.py +0 -0
  262. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/letta_response.py +0 -0
  263. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/letta_stop_reason.py +0 -0
  264. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/llm_batch_job.py +0 -0
  265. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/llm_config.py +0 -0
  266. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/llm_config_overrides.py +0 -0
  267. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/mcp.py +0 -0
  268. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/memory.py +0 -0
  269. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/message.py +0 -0
  270. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/openai/chat_completion_request.py +0 -0
  271. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/openai/chat_completion_response.py +0 -0
  272. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/openai/chat_completions.py +0 -0
  273. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/openai/embedding_response.py +0 -0
  274. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/openai/openai.py +0 -0
  275. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/organization.py +0 -0
  276. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/passage.py +0 -0
  277. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/pip_requirement.py +0 -0
  278. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/provider_trace.py +0 -0
  279. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/providers.py +0 -0
  280. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/response_format.py +0 -0
  281. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/run.py +0 -0
  282. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/sandbox_config.py +0 -0
  283. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/source.py +0 -0
  284. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/source_metadata.py +0 -0
  285. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/step.py +0 -0
  286. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/tool_execution_result.py +0 -0
  287. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/tool_rule.py +0 -0
  288. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/usage.py +0 -0
  289. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/schemas/user.py +0 -0
  290. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/__init__.py +0 -0
  291. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  292. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  293. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_base.py +0 -0
  294. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_block.py +0 -0
  295. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  296. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_message.py +0 -0
  297. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  298. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  299. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  300. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/__init__.py +0 -0
  301. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/constants.py +0 -0
  302. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/db.py +0 -0
  303. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/generate_openapi_schema.sh +0 -0
  304. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/__init__.py +0 -0
  305. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/auth/__init__.py +0 -0
  306. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/auth/index.py +0 -0
  307. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/auth_token.py +0 -0
  308. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/chat_completions_interface.py +0 -0
  309. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/interface.py +0 -0
  310. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/json_parser.py +0 -0
  311. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/__init__.py +0 -0
  312. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  313. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  314. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  315. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  316. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
  317. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/groups.py +0 -0
  318. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/health.py +0 -0
  319. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/identities.py +0 -0
  320. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  321. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/llms.py +0 -0
  322. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/messages.py +0 -0
  323. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  324. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/providers.py +0 -0
  325. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/runs.py +0 -0
  326. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  327. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/steps.py +0 -0
  328. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/tags.py +0 -0
  329. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/telemetry.py +0 -0
  330. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/tools.py +0 -0
  331. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/users.py +0 -0
  332. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/routers/v1/voice.py +0 -0
  333. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/static_files.py +0 -0
  334. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/streaming_response.py +0 -0
  335. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/rest_api/utils.py +0 -0
  336. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/server.py +0 -0
  337. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/startup.sh +0 -0
  338. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/static_files/assets/index-048c9598.js +0 -0
  339. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  340. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/static_files/favicon.ico +0 -0
  341. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/static_files/index.html +0 -0
  342. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  343. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/utils.py +0 -0
  344. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/ws_api/__init__.py +0 -0
  345. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/ws_api/example_client.py +0 -0
  346. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/ws_api/interface.py +0 -0
  347. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/ws_api/protocol.py +0 -0
  348. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/server/ws_api/server.py +0 -0
  349. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/__init__.py +0 -0
  350. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/block_manager.py +0 -0
  351. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/context_window_calculator/__init__.py +0 -0
  352. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/context_window_calculator/context_window_calculator.py +0 -0
  353. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/context_window_calculator/token_counter.py +0 -0
  354. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/__init__.py +0 -0
  355. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/chunker/__init__.py +0 -0
  356. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/chunker/line_chunker.py +0 -0
  357. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/chunker/llama_index_chunker.py +0 -0
  358. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/embedder/__init__.py +0 -0
  359. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/embedder/base_embedder.py +0 -0
  360. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/embedder/openai_embedder.py +0 -0
  361. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/embedder/pinecone_embedder.py +0 -0
  362. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/file_types.py +0 -0
  363. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/parser/__init__.py +0 -0
  364. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/parser/base_parser.py +0 -0
  365. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/parser/mistral_parser.py +0 -0
  366. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/file_processor/types.py +0 -0
  367. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/files_agents_manager.py +0 -0
  368. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/group_manager.py +0 -0
  369. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/helpers/agent_manager_helper.py +0 -0
  370. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/helpers/tool_execution_helper.py +0 -0
  371. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/identity_manager.py +0 -0
  372. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/llm_batch_manager.py +0 -0
  373. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp/__init__.py +0 -0
  374. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp/base_client.py +0 -0
  375. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp/sse_client.py +0 -0
  376. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp/stdio_client.py +0 -0
  377. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp/streamable_http_client.py +0 -0
  378. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp/types.py +0 -0
  379. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/mcp_manager.py +0 -0
  380. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/message_manager.py +0 -0
  381. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/organization_manager.py +0 -0
  382. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/passage_manager.py +0 -0
  383. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/per_agent_lock_manager.py +0 -0
  384. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/provider_manager.py +0 -0
  385. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/sandbox_config_manager.py +0 -0
  386. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/source_manager.py +0 -0
  387. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/step_manager.py +0 -0
  388. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/summarizer/__init__.py +0 -0
  389. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/summarizer/enums.py +0 -0
  390. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/summarizer/summarizer.py +0 -0
  391. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/telemetry_manager.py +0 -0
  392. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/__init__.py +0 -0
  393. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/builtin_tool_executor.py +0 -0
  394. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/composio_tool_executor.py +0 -0
  395. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/core_tool_executor.py +0 -0
  396. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/files_tool_executor.py +0 -0
  397. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/mcp_tool_executor.py +0 -0
  398. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/multi_agent_tool_executor.py +0 -0
  399. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/tool_execution_manager.py +0 -0
  400. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
  401. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/tool_executor.py +0 -0
  402. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_executor/tool_executor_base.py +0 -0
  403. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_manager.py +0 -0
  404. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_sandbox/__init__.py +0 -0
  405. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_sandbox/base.py +0 -0
  406. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
  407. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/services/user_manager.py +0 -0
  408. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/settings.py +0 -0
  409. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/streaming_interface.py +0 -0
  410. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/streaming_utils.py +0 -0
  411. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/system.py +0 -0
  412. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/templates/__init__.py +0 -0
  413. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/templates/summary_request_text.j2 +0 -0
  414. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/templates/template_helper.py +0 -0
  415. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/types/__init__.py +0 -0
  416. {letta_nightly-0.8.12.dev20250710104356 → letta_nightly-0.8.13.dev20250711104347}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.8.12.dev20250710104356
3
+ Version: 0.8.13.dev20250711104347
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -19,13 +19,13 @@ Provides-Extra: dev
19
19
  Provides-Extra: experimental
20
20
  Provides-Extra: external-tools
21
21
  Provides-Extra: google
22
+ Provides-Extra: pinecone
22
23
  Provides-Extra: postgres
23
24
  Provides-Extra: redis
24
25
  Provides-Extra: server
25
26
  Provides-Extra: tests
26
27
  Requires-Dist: aioboto3 (>=14.3.0,<15.0.0) ; extra == "bedrock"
27
28
  Requires-Dist: aiomultiprocess (>=0.9.1,<0.10.0)
28
- Requires-Dist: aiosqlite (>=0.21.0,<0.22.0)
29
29
  Requires-Dist: alembic (>=1.13.3,<2.0.0)
30
30
  Requires-Dist: anthropic (>=0.49.0,<0.50.0)
31
31
  Requires-Dist: apscheduler (>=3.11.0,<4.0.0)
@@ -56,7 +56,7 @@ Requires-Dist: isort (>=5.13.2,<6.0.0) ; extra == "dev" or extra == "all"
56
56
  Requires-Dist: jinja2 (>=3.1.5,<4.0.0)
57
57
  Requires-Dist: langchain (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
58
58
  Requires-Dist: langchain-community (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
59
- Requires-Dist: letta_client (>=0.1.183,<0.2.0)
59
+ Requires-Dist: letta_client (>=0.1.197,<0.2.0)
60
60
  Requires-Dist: llama-index (>=0.12.2,<0.13.0)
61
61
  Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
62
62
  Requires-Dist: locust (>=2.31.5,<3.0.0) ; extra == "dev" or extra == "desktop" or extra == "all"
@@ -75,7 +75,7 @@ Requires-Dist: pathvalidate (>=3.2.1,<4.0.0)
75
75
  Requires-Dist: pexpect (>=4.9.0,<5.0.0) ; extra == "dev" or extra == "all"
76
76
  Requires-Dist: pg8000 (>=1.30.3,<2.0.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
77
77
  Requires-Dist: pgvector (>=0.2.3,<0.3.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
78
- Requires-Dist: pinecone[asyncio] (>=7.3.0,<8.0.0)
78
+ Requires-Dist: pinecone[asyncio] (>=7.3.0,<8.0.0) ; extra == "pinecone" or extra == "all"
79
79
  Requires-Dist: pre-commit (>=3.5.0,<4.0.0) ; extra == "dev" or extra == "all"
80
80
  Requires-Dist: prettytable (>=3.9.0,<4.0.0)
81
81
  Requires-Dist: psycopg2 (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
@@ -5,7 +5,7 @@ try:
5
5
  __version__ = version("letta")
6
6
  except PackageNotFoundError:
7
7
  # Fallback for development installations
8
- __version__ = "0.8.12"
8
+ __version__ = "0.8.13"
9
9
 
10
10
  if os.environ.get("LETTA_VERSION"):
11
11
  __version__ = os.environ["LETTA_VERSION"]
@@ -96,7 +96,7 @@ class BaseAgent(ABC):
96
96
  """
97
97
  try:
98
98
  # [DB Call] loading blocks (modifies: agent_state.memory.blocks)
99
- await self.agent_manager.refresh_memory_async(agent_state=agent_state, actor=self.actor)
99
+ agent_state = await self.agent_manager.refresh_memory_async(agent_state=agent_state, actor=self.actor)
100
100
 
101
101
  tool_constraint_block = None
102
102
  if tool_rules_solver is not None:
@@ -104,18 +104,37 @@ class BaseAgent(ABC):
104
104
 
105
105
  # TODO: This is a pretty brittle pattern established all over our code, need to get rid of this
106
106
  curr_system_message = in_context_messages[0]
107
- curr_memory_str = agent_state.memory.compile(tool_usage_rules=tool_constraint_block, sources=agent_state.sources)
108
107
  curr_system_message_text = curr_system_message.content[0].text
109
- if curr_memory_str in curr_system_message_text:
108
+
109
+ # extract the dynamic section that includes memory blocks, tool rules, and directories
110
+ # this avoids timestamp comparison issues
111
+ def extract_dynamic_section(text):
112
+ start_marker = "</base_instructions>"
113
+ end_marker = "<memory_metadata>"
114
+
115
+ start_idx = text.find(start_marker)
116
+ end_idx = text.find(end_marker)
117
+
118
+ if start_idx != -1 and end_idx != -1:
119
+ return text[start_idx:end_idx]
120
+ return text # fallback to full text if markers not found
121
+
122
+ curr_dynamic_section = extract_dynamic_section(curr_system_message_text)
123
+
124
+ # generate just the memory string with current state for comparison
125
+ curr_memory_str = agent_state.memory.compile(tool_usage_rules=tool_constraint_block, sources=agent_state.sources)
126
+ new_dynamic_section = extract_dynamic_section(curr_memory_str)
127
+
128
+ # compare just the dynamic sections (memory blocks, tool rules, directories)
129
+ if curr_dynamic_section == new_dynamic_section:
110
130
  logger.debug(
111
- f"Memory hasn't changed for agent id={agent_state.id} and actor=({self.actor.id}, {self.actor.name}), skipping system prompt rebuild"
131
+ f"Memory and sources haven't changed for agent id={agent_state.id} and actor=({self.actor.id}, {self.actor.name}), skipping system prompt rebuild"
112
132
  )
113
133
  return in_context_messages
114
134
 
115
135
  memory_edit_timestamp = get_utc_time()
116
136
 
117
- # [DB Call] size of messages and archival memories
118
- # todo: blocking for now
137
+ # size of messages and archival memories
119
138
  if num_messages is None:
120
139
  num_messages = await self.message_manager.size_async(actor=self.actor, agent_id=agent_state.id)
121
140
  if num_archival_memories is None:
@@ -3,7 +3,7 @@ import json
3
3
  import uuid
4
4
  from collections.abc import AsyncGenerator
5
5
  from datetime import datetime
6
- from typing import Optional
6
+ from typing import Optional, Union
7
7
 
8
8
  from openai import AsyncStream
9
9
  from openai.types.chat import ChatCompletionChunk
@@ -165,18 +165,28 @@ class LettaAgent(BaseAgent):
165
165
  use_assistant_message: bool = True,
166
166
  request_start_timestamp_ns: int | None = None,
167
167
  include_return_message_types: list[MessageType] | None = None,
168
- ) -> LettaResponse:
168
+ dry_run: bool = False,
169
+ ) -> Union[LettaResponse, dict]:
169
170
  # TODO (cliandy): pass in run_id and use at send_message endpoints for all step functions
170
171
  agent_state = await self.agent_manager.get_agent_by_id_async(
171
- agent_id=self.agent_id, include_relationships=["tools", "memory", "tool_exec_environment_variables"], actor=self.actor
172
+ agent_id=self.agent_id,
173
+ include_relationships=["tools", "memory", "tool_exec_environment_variables", "sources"],
174
+ actor=self.actor,
172
175
  )
173
- _, new_in_context_messages, stop_reason, usage = await self._step(
176
+ result = await self._step(
174
177
  agent_state=agent_state,
175
178
  input_messages=input_messages,
176
179
  max_steps=max_steps,
177
180
  run_id=run_id,
178
181
  request_start_timestamp_ns=request_start_timestamp_ns,
182
+ dry_run=dry_run,
179
183
  )
184
+
185
+ # If dry run, return the request payload directly
186
+ if dry_run:
187
+ return result
188
+
189
+ _, new_in_context_messages, stop_reason, usage = result
180
190
  return _create_letta_response(
181
191
  new_in_context_messages=new_in_context_messages,
182
192
  use_assistant_message=use_assistant_message,
@@ -195,7 +205,9 @@ class LettaAgent(BaseAgent):
195
205
  include_return_message_types: list[MessageType] | None = None,
196
206
  ):
197
207
  agent_state = await self.agent_manager.get_agent_by_id_async(
198
- agent_id=self.agent_id, include_relationships=["tools", "memory", "tool_exec_environment_variables"], actor=self.actor
208
+ agent_id=self.agent_id,
209
+ include_relationships=["tools", "memory", "tool_exec_environment_variables", "sources"],
210
+ actor=self.actor,
199
211
  )
200
212
  current_in_context_messages, new_in_context_messages = await _prepare_in_context_messages_no_persist_async(
201
213
  input_messages, agent_state, self.message_manager, self.actor
@@ -279,6 +291,7 @@ class LettaAgent(BaseAgent):
279
291
  tool_rules_solver,
280
292
  response.usage,
281
293
  reasoning_content=reasoning,
294
+ step_id=step_id,
282
295
  initial_messages=initial_messages,
283
296
  agent_step_span=agent_step_span,
284
297
  is_final_step=(i == max_steps - 1),
@@ -357,7 +370,8 @@ class LettaAgent(BaseAgent):
357
370
  max_steps: int = DEFAULT_MAX_STEPS,
358
371
  run_id: str | None = None,
359
372
  request_start_timestamp_ns: int | None = None,
360
- ) -> tuple[list[Message], list[Message], LettaStopReason | None, LettaUsageStatistics]:
373
+ dry_run: bool = False,
374
+ ) -> Union[tuple[list[Message], list[Message], LettaStopReason | None, LettaUsageStatistics], dict]:
361
375
  """
362
376
  Carries out an invocation of the agent loop. In each step, the agent
363
377
  1. Rebuilds its memory
@@ -394,6 +408,16 @@ class LettaAgent(BaseAgent):
394
408
  agent_step_span = tracer.start_span("agent_step", start_time=step_start)
395
409
  agent_step_span.set_attributes({"step_id": step_id})
396
410
 
411
+ # If dry run, build request data and return it without making LLM call
412
+ if dry_run:
413
+ request_data, valid_tool_names = await self._create_llm_request_data_async(
414
+ llm_client=llm_client,
415
+ in_context_messages=current_in_context_messages + new_in_context_messages,
416
+ agent_state=agent_state,
417
+ tool_rules_solver=tool_rules_solver,
418
+ )
419
+ return request_data
420
+
397
421
  request_data, response_data, current_in_context_messages, new_in_context_messages, valid_tool_names = (
398
422
  await self._build_and_request_from_llm(
399
423
  current_in_context_messages, new_in_context_messages, agent_state, llm_client, tool_rules_solver, agent_step_span
@@ -530,7 +554,9 @@ class LettaAgent(BaseAgent):
530
554
  4. Processes the response
531
555
  """
532
556
  agent_state = await self.agent_manager.get_agent_by_id_async(
533
- agent_id=self.agent_id, include_relationships=["tools", "memory", "tool_exec_environment_variables"], actor=self.actor
557
+ agent_id=self.agent_id,
558
+ include_relationships=["tools", "memory", "tool_exec_environment_variables", "sources"],
559
+ actor=self.actor,
534
560
  )
535
561
  current_in_context_messages, new_in_context_messages = await _prepare_in_context_messages_no_persist_async(
536
562
  input_messages, agent_state, self.message_manager, self.actor
@@ -628,7 +654,7 @@ class LettaAgent(BaseAgent):
628
654
  )
629
655
 
630
656
  # log LLM request time
631
- llm_request_ms = ns_to_ms(stream_end_time_ns - request_start_timestamp_ns)
657
+ llm_request_ms = ns_to_ms(stream_end_time_ns - provider_request_start_timestamp_ns)
632
658
  agent_step_span.add_event(name="llm_request_ms", attributes={"duration_ms": llm_request_ms})
633
659
  MetricRegistry().llm_execution_time_ms_histogram.record(
634
660
  llm_request_ms,
@@ -129,7 +129,8 @@ def get_function_name_and_docstring(source_code: str, name: Optional[str] = None
129
129
  raise LettaToolCreateError("Could not determine function name")
130
130
 
131
131
  if not docstring:
132
- raise LettaToolCreateError("Docstring is missing")
132
+ # For tools with args_json_schema, the docstring is optional
133
+ docstring = f"The {function_name} tool"
133
134
 
134
135
  return function_name, docstring
135
136
 
@@ -10,6 +10,8 @@ def json_dumps(data, indent=2):
10
10
  def safe_serializer(obj):
11
11
  if isinstance(obj, datetime):
12
12
  return obj.isoformat()
13
+ if isinstance(obj, bytes):
14
+ return obj.decode("utf-8")
13
15
  raise TypeError(f"Type {type(obj)} not serializable")
14
16
 
15
17
  return json.dumps(data, indent=indent, default=safe_serializer, ensure_ascii=False)
@@ -1,6 +1,12 @@
1
1
  from typing import Any, Dict, List
2
2
 
3
- from pinecone import PineconeAsyncio
3
+ try:
4
+ from pinecone import IndexEmbed, PineconeAsyncio
5
+ from pinecone.exceptions.exceptions import NotFoundException
6
+
7
+ PINECONE_AVAILABLE = True
8
+ except ImportError:
9
+ PINECONE_AVAILABLE = False
4
10
 
5
11
  from letta.constants import (
6
12
  PINECONE_CLOUD,
@@ -27,11 +33,20 @@ def should_use_pinecone(verbose: bool = False):
27
33
  bool(settings.pinecone_source_index),
28
34
  )
29
35
 
30
- return settings.enable_pinecone and settings.pinecone_api_key and settings.pinecone_agent_index and settings.pinecone_source_index
36
+ return all(
37
+ (
38
+ PINECONE_AVAILABLE,
39
+ settings.enable_pinecone,
40
+ settings.pinecone_api_key,
41
+ settings.pinecone_agent_index,
42
+ settings.pinecone_source_index,
43
+ )
44
+ )
31
45
 
32
46
 
33
47
  async def upsert_pinecone_indices():
34
- from pinecone import IndexEmbed, PineconeAsyncio
48
+ if not PINECONE_AVAILABLE:
49
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
35
50
 
36
51
  for index_name in get_pinecone_indices():
37
52
  async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
@@ -49,6 +64,9 @@ def get_pinecone_indices() -> List[str]:
49
64
 
50
65
 
51
66
  async def upsert_file_records_to_pinecone_index(file_id: str, source_id: str, chunks: List[str], actor: User):
67
+ if not PINECONE_AVAILABLE:
68
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
69
+
52
70
  records = []
53
71
  for i, chunk in enumerate(chunks):
54
72
  record = {
@@ -63,7 +81,8 @@ async def upsert_file_records_to_pinecone_index(file_id: str, source_id: str, ch
63
81
 
64
82
 
65
83
  async def delete_file_records_from_pinecone_index(file_id: str, actor: User):
66
- from pinecone.exceptions.exceptions import NotFoundException
84
+ if not PINECONE_AVAILABLE:
85
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
67
86
 
68
87
  namespace = actor.organization_id
69
88
  try:
@@ -81,7 +100,8 @@ async def delete_file_records_from_pinecone_index(file_id: str, actor: User):
81
100
 
82
101
 
83
102
  async def delete_source_records_from_pinecone_index(source_id: str, actor: User):
84
- from pinecone.exceptions.exceptions import NotFoundException
103
+ if not PINECONE_AVAILABLE:
104
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
85
105
 
86
106
  namespace = actor.organization_id
87
107
  try:
@@ -94,6 +114,9 @@ async def delete_source_records_from_pinecone_index(source_id: str, actor: User)
94
114
 
95
115
 
96
116
  async def upsert_records_to_pinecone_index(records: List[dict], actor: User):
117
+ if not PINECONE_AVAILABLE:
118
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
119
+
97
120
  async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
98
121
  description = await pc.describe_index(name=settings.pinecone_source_index)
99
122
  async with pc.IndexAsyncio(host=description.index.host) as dense_index:
@@ -104,6 +127,9 @@ async def upsert_records_to_pinecone_index(records: List[dict], actor: User):
104
127
 
105
128
 
106
129
  async def search_pinecone_index(query: str, limit: int, filter: Dict[str, Any], actor: User) -> Dict[str, Any]:
130
+ if not PINECONE_AVAILABLE:
131
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
132
+
107
133
  async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
108
134
  description = await pc.describe_index(name=settings.pinecone_source_index)
109
135
  async with pc.IndexAsyncio(host=description.index.host) as dense_index:
@@ -127,7 +153,8 @@ async def search_pinecone_index(query: str, limit: int, filter: Dict[str, Any],
127
153
 
128
154
 
129
155
  async def list_pinecone_index_for_files(file_id: str, actor: User, limit: int = None, pagination_token: str = None) -> List[str]:
130
- from pinecone.exceptions.exceptions import NotFoundException
156
+ if not PINECONE_AVAILABLE:
157
+ raise ImportError("Pinecone is not available. Please install pinecone to use this feature.")
131
158
 
132
159
  namespace = actor.organization_id
133
160
  try:
@@ -29,6 +29,7 @@ async def _try_acquire_lock_and_start_scheduler(server: SyncServer) -> bool:
29
29
  if _is_scheduler_leader:
30
30
  return True # Already leading
31
31
 
32
+ engine_name = None
32
33
  lock_session = None
33
34
  acquired_lock = False
34
35
  try:
@@ -36,32 +37,25 @@ async def _try_acquire_lock_and_start_scheduler(server: SyncServer) -> bool:
36
37
  engine = session.get_bind()
37
38
  engine_name = engine.name
38
39
  logger.info(f"Database engine type: {engine_name}")
39
- if engine_name != "postgresql":
40
- logger.warning(f"Advisory locks not supported for {engine_name} database. Starting scheduler without leader election.")
41
- acquired_lock = True
42
- else:
43
- lock_session = db_registry.get_async_session_factory()()
44
- result = await lock_session.execute(
45
- text("SELECT pg_try_advisory_lock(CAST(:lock_key AS bigint))"), {"lock_key": ADVISORY_LOCK_KEY}
46
- )
47
- acquired_lock = result.scalar()
48
- await lock_session.commit()
49
-
50
- if not acquired_lock:
51
- if lock_session:
52
- await lock_session.close()
53
- logger.info("Scheduler lock held by another instance.")
54
- return False
55
40
 
56
- if engine_name == "postgresql":
57
- logger.info("Acquired PostgreSQL advisory lock.")
58
- _advisory_lock_session = lock_session
59
- lock_session = None
41
+ if engine_name != "postgresql":
42
+ logger.warning(f"Advisory locks not supported for {engine_name} database. Starting scheduler without leader election.")
43
+ acquired_lock = True
60
44
  else:
61
- logger.info("Starting scheduler for non-PostgreSQL database.")
62
- if lock_session:
45
+ lock_session = db_registry.get_async_session_factory()()
46
+ result = await lock_session.execute(
47
+ text("SELECT pg_try_advisory_lock(CAST(:lock_key AS bigint))"), {"lock_key": ADVISORY_LOCK_KEY}
48
+ )
49
+ acquired_lock = result.scalar()
50
+ await lock_session.commit()
51
+
52
+ if not acquired_lock:
63
53
  await lock_session.close()
64
- lock_session = None
54
+ logger.info("Scheduler lock held by another instance.")
55
+ return False
56
+ else:
57
+ _advisory_lock_session = lock_session
58
+ lock_session = None
65
59
 
66
60
  trigger = IntervalTrigger(
67
61
  seconds=settings.poll_running_llm_batches_interval_seconds,
@@ -90,7 +84,6 @@ async def _try_acquire_lock_and_start_scheduler(server: SyncServer) -> bool:
90
84
  if acquired_lock:
91
85
  logger.warning("Attempting to release lock due to error during startup.")
92
86
  try:
93
- _advisory_lock_session = lock_session
94
87
  await _release_advisory_lock(lock_session)
95
88
  except Exception as unlock_err:
96
89
  logger.error(f"Failed to release lock during error handling: {unlock_err}", exc_info=True)
@@ -108,8 +101,8 @@ async def _try_acquire_lock_and_start_scheduler(server: SyncServer) -> bool:
108
101
  if lock_session:
109
102
  try:
110
103
  await lock_session.close()
111
- except:
112
- pass
104
+ except Exception as e:
105
+ logger.error(f"Failed to close session during error handling: {e}", exc_info=True)
113
106
 
114
107
 
115
108
  async def _background_lock_retry_loop(server: SyncServer):
@@ -138,15 +131,13 @@ async def _background_lock_retry_loop(server: SyncServer):
138
131
  break
139
132
  except Exception as e:
140
133
  logger.error(f"Error in background lock retry loop: {e}", exc_info=True)
141
- await asyncio.sleep(settings.poll_lock_retry_interval_seconds)
142
134
 
143
135
 
144
- async def _release_advisory_lock(lock_session=None):
136
+ async def _release_advisory_lock(target_lock_session=None):
145
137
  """Releases the advisory lock using the stored session."""
146
138
  global _advisory_lock_session
147
139
 
148
- lock_session = _advisory_lock_session or lock_session
149
- _advisory_lock_session = None
140
+ lock_session = target_lock_session or _advisory_lock_session
150
141
 
151
142
  if lock_session is not None:
152
143
  logger.info(f"Attempting to release PostgreSQL advisory lock {ADVISORY_LOCK_KEY}")
@@ -161,6 +152,8 @@ async def _release_advisory_lock(lock_session=None):
161
152
  if lock_session:
162
153
  await lock_session.close()
163
154
  logger.info("Closed database session that held advisory lock.")
155
+ if lock_session == _advisory_lock_session:
156
+ _advisory_lock_session = None
164
157
  except Exception as e:
165
158
  logger.error(f"Error closing advisory lock session: {e}", exc_info=True)
166
159
  else:
@@ -58,7 +58,12 @@ class MetricRegistry:
58
58
  def tool_execution_counter(self) -> Counter:
59
59
  return self._get_or_create_metric(
60
60
  "count_tool_execution",
61
- partial(self._meter.create_counter, name="count_tool_execution", description="Counts the number of tools executed.", unit="1"),
61
+ partial(
62
+ self._meter.create_counter,
63
+ name="count_tool_execution",
64
+ description="Counts the number of tools executed.",
65
+ unit="1",
66
+ ),
62
67
  )
63
68
 
64
69
  # project_id + model
@@ -66,7 +71,12 @@ class MetricRegistry:
66
71
  def ttft_ms_histogram(self) -> Histogram:
67
72
  return self._get_or_create_metric(
68
73
  "hist_ttft_ms",
69
- partial(self._meter.create_histogram, name="hist_ttft_ms", description="Histogram for the Time to First Token (ms)", unit="ms"),
74
+ partial(
75
+ self._meter.create_histogram,
76
+ name="hist_ttft_ms",
77
+ description="Histogram for the Time to First Token (ms)",
78
+ unit="ms",
79
+ ),
70
80
  )
71
81
 
72
82
  # (includes model name)
@@ -158,3 +168,15 @@ class MetricRegistry:
158
168
  unit="1",
159
169
  ),
160
170
  )
171
+
172
+ @property
173
+ def file_process_bytes_histogram(self) -> Histogram:
174
+ return self._get_or_create_metric(
175
+ "hist_file_process_bytes",
176
+ partial(
177
+ self._meter.create_histogram,
178
+ name="hist_file_process_bytes",
179
+ description="Histogram for file process in bytes",
180
+ unit="By",
181
+ ),
182
+ )
@@ -139,3 +139,11 @@ class MCPServerType(str, Enum):
139
139
  SSE = "sse"
140
140
  STDIO = "stdio"
141
141
  STREAMABLE_HTTP = "streamable_http"
142
+
143
+
144
+ class DuplicateFileHandling(str, Enum):
145
+ """How to handle duplicate filenames when uploading files"""
146
+
147
+ SKIP = "skip" # skip files with duplicate names
148
+ ERROR = "error" # error when duplicate names are encountered
149
+ SUFFIX = "suffix" # add numeric suffix to make names unique (default behavior)
@@ -77,9 +77,8 @@ class Tool(BaseTool):
77
77
 
78
78
  if self.tool_type is ToolType.CUSTOM:
79
79
  if not self.source_code:
80
- error_msg = f"Custom tool with id={self.id} is missing source_code field."
81
- logger.error(error_msg)
82
- raise ValueError(error_msg)
80
+ logger.error("Custom tool with id=%s is missing source_code field", self.id)
81
+ raise ValueError(f"Custom tool with id={self.id} is missing source_code field.")
83
82
 
84
83
  # Always derive json_schema for freshest possible json_schema
85
84
  if self.args_json_schema is not None:
@@ -96,8 +95,7 @@ class Tool(BaseTool):
96
95
  try:
97
96
  self.json_schema = derive_openai_json_schema(source_code=self.source_code)
98
97
  except Exception as e:
99
- error_msg = f"Failed to derive json schema for tool with id={self.id} name={self.name}. Error: {str(e)}"
100
- logger.error(error_msg)
98
+ logger.error("Failed to derive json schema for tool with id=%s name=%s: %s", self.id, self.name, e)
101
99
  elif self.tool_type in {ToolType.LETTA_CORE, ToolType.LETTA_MEMORY_CORE, ToolType.LETTA_SLEEPTIME_CORE}:
102
100
  # If it's letta core tool, we generate the json_schema on the fly here
103
101
  self.json_schema = get_json_schema_from_module(module_name=LETTA_CORE_TOOL_MODULE_NAME, function_name=self.name)
@@ -119,9 +117,8 @@ class Tool(BaseTool):
119
117
 
120
118
  # At this point, we need to validate that at least json_schema is populated
121
119
  if not self.json_schema:
122
- error_msg = f"Tool with id={self.id} name={self.name} tool_type={self.tool_type} is missing a json_schema."
123
- logger.error(error_msg)
124
- raise ValueError(error_msg)
120
+ logger.error("Tool with id=%s name=%s tool_type=%s is missing a json_schema", self.id, self.name, self.tool_type)
121
+ raise ValueError(f"Tool with id={self.id} name={self.name} tool_type={self.tool_type} is missing a json_schema.")
125
122
 
126
123
  # Derive name from the JSON schema if not provided
127
124
  if not self.name:
@@ -337,8 +337,11 @@ def create_application() -> "FastAPI":
337
337
  # / static files
338
338
  mount_static_files(app)
339
339
 
340
+ no_generation = "--no-generation" in sys.argv
341
+
340
342
  # Generate OpenAPI schema after all routes are mounted
341
- generate_openapi_schema(app)
343
+ if not no_generation:
344
+ generate_openapi_schema(app)
342
345
 
343
346
  return app
344
347
 
@@ -2,7 +2,7 @@ import asyncio
2
2
  import json
3
3
  import traceback
4
4
  from datetime import datetime, timezone
5
- from typing import Annotated, Any, List, Optional
5
+ from typing import Annotated, Any, Dict, List, Optional, Union
6
6
 
7
7
  from fastapi import APIRouter, Body, Depends, File, Header, HTTPException, Query, Request, UploadFile, status
8
8
  from fastapi.responses import JSONResponse
@@ -522,7 +522,7 @@ async def attach_block(
522
522
  actor_id: str | None = Header(None, alias="user_id"),
523
523
  ):
524
524
  """
525
- Attach a core memoryblock to an agent.
525
+ Attach a core memory block to an agent.
526
526
  """
527
527
  actor = await server.user_manager.get_actor_or_default_async(actor_id=actor_id)
528
528
  return await server.agent_manager.attach_block_async(agent_id=agent_id, block_id=block_id, actor=actor)
@@ -1160,6 +1160,69 @@ async def list_agent_groups(
1160
1160
  return server.agent_manager.list_groups(agent_id=agent_id, manager_type=manager_type, actor=actor)
1161
1161
 
1162
1162
 
1163
+ @router.post(
1164
+ "/{agent_id}/messages/preview-raw-payload",
1165
+ response_model=Dict[str, Any],
1166
+ operation_id="preview_raw_payload",
1167
+ )
1168
+ async def preview_raw_payload(
1169
+ agent_id: str,
1170
+ request: Union[LettaRequest, LettaStreamingRequest] = Body(...),
1171
+ server: SyncServer = Depends(get_letta_server),
1172
+ actor_id: str | None = Header(None, alias="user_id"),
1173
+ ):
1174
+ """
1175
+ Inspect the raw LLM request payload without sending it.
1176
+
1177
+ This endpoint processes the message through the agent loop up until
1178
+ the LLM request, then returns the raw request payload that would
1179
+ be sent to the LLM provider. Useful for debugging and inspection.
1180
+ """
1181
+ actor = await server.user_manager.get_actor_or_default_async(actor_id=actor_id)
1182
+ agent = await server.agent_manager.get_agent_by_id_async(agent_id, actor, include_relationships=["multi_agent_group"])
1183
+ agent_eligible = agent.multi_agent_group is None or agent.multi_agent_group.manager_type in ["sleeptime", "voice_sleeptime"]
1184
+ model_compatible = agent.llm_config.model_endpoint_type in ["anthropic", "openai", "together", "google_ai", "google_vertex", "bedrock"]
1185
+
1186
+ if agent_eligible and model_compatible:
1187
+ if agent.enable_sleeptime:
1188
+ # TODO: @caren need to support this for sleeptime
1189
+ raise HTTPException(
1190
+ status_code=status.HTTP_400_BAD_REQUEST,
1191
+ detail="Payload inspection is not supported for agents with sleeptime enabled.",
1192
+ )
1193
+ else:
1194
+ agent_loop = LettaAgent(
1195
+ agent_id=agent_id,
1196
+ message_manager=server.message_manager,
1197
+ agent_manager=server.agent_manager,
1198
+ block_manager=server.block_manager,
1199
+ job_manager=server.job_manager,
1200
+ passage_manager=server.passage_manager,
1201
+ actor=actor,
1202
+ step_manager=server.step_manager,
1203
+ telemetry_manager=server.telemetry_manager if settings.llm_api_logging else NoopTelemetryManager(),
1204
+ summarizer_mode=(
1205
+ SummarizationMode.STATIC_MESSAGE_BUFFER
1206
+ if agent.agent_type == AgentType.voice_convo_agent
1207
+ else SummarizationMode.PARTIAL_EVICT_MESSAGE_BUFFER
1208
+ ),
1209
+ )
1210
+
1211
+ # TODO: Support step_streaming
1212
+ return await agent_loop.step(
1213
+ input_messages=request.messages,
1214
+ use_assistant_message=request.use_assistant_message,
1215
+ include_return_message_types=request.include_return_message_types,
1216
+ dry_run=True,
1217
+ )
1218
+
1219
+ else:
1220
+ raise HTTPException(
1221
+ status_code=status.HTTP_403_FORBIDDEN,
1222
+ detail="Payload inspection is not currently supported for this agent configuration.",
1223
+ )
1224
+
1225
+
1163
1226
  @router.post("/{agent_id}/summarize", response_model=AgentState, operation_id="summarize_agent_conversation")
1164
1227
  async def summarize_agent_conversation(
1165
1228
  agent_id: str,