letta-nightly 0.9.1.dev20250731104458__tar.gz → 0.10.0.dev20250801010504__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 (458) hide show
  1. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/PKG-INFO +7 -3
  2. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/__init__.py +2 -1
  3. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agent.py +1 -1
  4. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/base_agent.py +2 -2
  5. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/letta_agent.py +22 -8
  6. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/letta_agent_batch.py +2 -2
  7. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/voice_agent.py +2 -2
  8. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/client/client.py +0 -11
  9. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/errors.py +11 -0
  10. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/function_sets/builtin.py +3 -7
  11. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/mcp_client/types.py +107 -1
  12. letta_nightly-0.10.0.dev20250801010504/letta/helpers/reasoning_helper.py +48 -0
  13. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/tool_execution_helper.py +2 -65
  14. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/interfaces/openai_streaming_interface.py +38 -2
  15. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/anthropic_client.py +1 -5
  16. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/google_vertex_client.py +1 -1
  17. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/llm_client.py +1 -1
  18. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/openai_client.py +2 -0
  19. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/sample_response_jsons/lmstudio_embedding_list.json +3 -2
  20. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/agent.py +5 -0
  21. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/enums.py +0 -1
  22. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/file.py +0 -1
  23. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/files_agents.py +9 -9
  24. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/sandbox_config.py +1 -1
  25. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/sqlite_functions.py +15 -13
  26. letta_nightly-0.10.0.dev20250801010504/letta/prompts/system/memgpt_generate_tool.txt +139 -0
  27. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/agent.py +15 -1
  28. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/enums.py +6 -0
  29. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/file.py +3 -3
  30. letta_nightly-0.10.0.dev20250801010504/letta/schemas/letta_ping.py +28 -0
  31. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/letta_request.py +9 -0
  32. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/letta_stop_reason.py +25 -0
  33. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/llm_config.py +1 -0
  34. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/mcp.py +16 -3
  35. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/memory.py +5 -0
  36. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/lmstudio.py +7 -0
  37. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/ollama.py +11 -8
  38. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/sandbox_config.py +17 -7
  39. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/app.py +2 -0
  40. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/agents.py +93 -30
  41. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/blocks.py +52 -0
  42. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/sandbox_configs.py +2 -1
  43. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/tools.py +43 -101
  44. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/streaming_response.py +121 -9
  45. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/server.py +6 -10
  46. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/agent_manager.py +41 -4
  47. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/block_manager.py +63 -1
  48. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/chunker/line_chunker.py +20 -19
  49. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/file_processor.py +0 -2
  50. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/file_types.py +1 -2
  51. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/files_agents_manager.py +46 -6
  52. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/helpers/agent_manager_helper.py +185 -13
  53. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/job_manager.py +4 -4
  54. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/oauth_utils.py +6 -150
  55. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp_manager.py +120 -2
  56. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/sandbox_config_manager.py +3 -5
  57. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/builtin_tool_executor.py +13 -18
  58. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/files_tool_executor.py +31 -27
  59. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/mcp_tool_executor.py +10 -1
  60. letta_nightly-0.9.1.dev20250731104458/letta/services/tool_executor/tool_executor.py → letta_nightly-0.10.0.dev20250801010504/letta/services/tool_executor/sandbox_tool_executor.py +14 -2
  61. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/tool_execution_manager.py +1 -1
  62. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/tool_execution_sandbox.py +2 -1
  63. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_manager.py +59 -21
  64. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_sandbox/base.py +18 -2
  65. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_sandbox/e2b_sandbox.py +5 -35
  66. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_sandbox/local_sandbox.py +5 -22
  67. letta_nightly-0.10.0.dev20250801010504/letta/services/tool_sandbox/modal_sandbox.py +205 -0
  68. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/settings.py +27 -8
  69. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/system.py +1 -4
  70. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/templates/template_helper.py +5 -0
  71. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/utils.py +14 -2
  72. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/pyproject.toml +14 -6
  73. letta_nightly-0.9.1.dev20250731104458/letta/orm/__all__.py +0 -15
  74. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/LICENSE +0 -0
  75. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/README.md +0 -0
  76. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/__init__.py +0 -0
  77. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/ephemeral_agent.py +0 -0
  78. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/ephemeral_summary_agent.py +0 -0
  79. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/exceptions.py +0 -0
  80. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/helpers.py +0 -0
  81. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/agents/voice_sleeptime_agent.py +0 -0
  82. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/cli/cli.py +0 -0
  83. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/cli/cli_load.py +0 -0
  84. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/client/__init__.py +0 -0
  85. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/client/streaming.py +0 -0
  86. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/client/utils.py +0 -0
  87. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/config.py +0 -0
  88. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/constants.py +0 -0
  89. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/data_sources/__init__.py +0 -0
  90. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/data_sources/connectors.py +0 -0
  91. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/data_sources/connectors_helper.py +0 -0
  92. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/data_sources/redis_client.py +0 -0
  93. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/embeddings.py +0 -0
  94. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/__init__.py +0 -0
  95. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/ast_parsers.py +0 -0
  96. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/async_composio_toolset.py +0 -0
  97. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/composio_helpers.py +0 -0
  98. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/function_sets/base.py +0 -0
  99. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/function_sets/extras.py +0 -0
  100. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/function_sets/files.py +0 -0
  101. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/function_sets/multi_agent.py +0 -0
  102. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/function_sets/voice.py +0 -0
  103. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/functions.py +0 -0
  104. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/helpers.py +0 -0
  105. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/interface.py +0 -0
  106. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/mcp_client/__init__.py +0 -0
  107. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/mcp_client/base_client.py +0 -0
  108. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/mcp_client/exceptions.py +0 -0
  109. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/mcp_client/sse_client.py +0 -0
  110. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/mcp_client/stdio_client.py +0 -0
  111. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/prompts.py +0 -0
  112. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/schema_generator.py +0 -0
  113. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/functions/types.py +0 -0
  114. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/groups/dynamic_multi_agent.py +0 -0
  115. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/groups/helpers.py +0 -0
  116. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/groups/round_robin_multi_agent.py +0 -0
  117. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/groups/sleeptime_multi_agent.py +0 -0
  118. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/groups/sleeptime_multi_agent_v2.py +0 -0
  119. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/groups/supervisor_multi_agent.py +0 -0
  120. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/__init__.py +0 -0
  121. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/composio_helpers.py +0 -0
  122. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/converters.py +0 -0
  123. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/datetime_helpers.py +0 -0
  124. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/decorators.py +0 -0
  125. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/json_helpers.py +0 -0
  126. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/message_helper.py +0 -0
  127. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/pinecone_utils.py +0 -0
  128. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/singleton.py +0 -0
  129. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/helpers/tool_rule_solver.py +0 -0
  130. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/humans/__init__.py +0 -0
  131. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/humans/examples/basic.txt +0 -0
  132. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/humans/examples/cs_phd.txt +0 -0
  133. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/interface.py +0 -0
  134. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/interfaces/__init__.py +0 -0
  135. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/interfaces/anthropic_streaming_interface.py +0 -0
  136. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  137. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/interfaces/utils.py +0 -0
  138. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/jobs/__init__.py +0 -0
  139. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/jobs/helpers.py +0 -0
  140. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/jobs/llm_batch_job_polling.py +0 -0
  141. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/jobs/scheduler.py +0 -0
  142. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/jobs/types.py +0 -0
  143. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/__init__.py +0 -0
  144. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/anthropic.py +0 -0
  145. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/aws_bedrock.py +0 -0
  146. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/azure_openai.py +0 -0
  147. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/azure_openai_constants.py +0 -0
  148. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/bedrock_client.py +0 -0
  149. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/cohere.py +0 -0
  150. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/deepseek.py +0 -0
  151. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/google_ai_client.py +0 -0
  152. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/google_constants.py +0 -0
  153. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/helpers.py +0 -0
  154. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/llm_api_tools.py +0 -0
  155. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/llm_client_base.py +0 -0
  156. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/mistral.py +0 -0
  157. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/openai.py +0 -0
  158. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/sample_response_jsons/aws_bedrock.json +0 -0
  159. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/llm_api/sample_response_jsons/lmstudio_model_list.json +0 -0
  160. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/README.md +0 -0
  161. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/__init__.py +0 -0
  162. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/chat_completion_proxy.py +0 -0
  163. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/constants.py +0 -0
  164. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/function_parser.py +0 -0
  165. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/grammars/__init__.py +0 -0
  166. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  167. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/grammars/json.gbnf +0 -0
  168. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  169. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/json_parser.py +0 -0
  170. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/koboldcpp/api.py +0 -0
  171. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/koboldcpp/settings.py +0 -0
  172. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llamacpp/api.py +0 -0
  173. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llamacpp/settings.py +0 -0
  174. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  175. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  176. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  177. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  178. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  179. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  180. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  181. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  182. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  183. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/lmstudio/api.py +0 -0
  184. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/lmstudio/settings.py +0 -0
  185. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/ollama/api.py +0 -0
  186. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/ollama/settings.py +0 -0
  187. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/settings/__init__.py +0 -0
  188. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  189. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/settings/settings.py +0 -0
  190. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/settings/simple.py +0 -0
  191. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/utils.py +0 -0
  192. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/vllm/api.py +0 -0
  193. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/webui/api.py +0 -0
  194. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/webui/legacy_api.py +0 -0
  195. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/webui/legacy_settings.py +0 -0
  196. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/local_llm/webui/settings.py +0 -0
  197. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/log.py +0 -0
  198. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/main.py +0 -0
  199. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/memory.py +0 -0
  200. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/openai_backcompat/__init__.py +0 -0
  201. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/openai_backcompat/openai_object.py +0 -0
  202. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/__init__.py +0 -0
  203. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/agents_tags.py +0 -0
  204. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/base.py +0 -0
  205. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/block.py +0 -0
  206. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/block_history.py +0 -0
  207. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/blocks_agents.py +0 -0
  208. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/custom_columns.py +0 -0
  209. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/errors.py +0 -0
  210. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/group.py +0 -0
  211. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/groups_agents.py +0 -0
  212. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/groups_blocks.py +0 -0
  213. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/identities_agents.py +0 -0
  214. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/identities_blocks.py +0 -0
  215. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/identity.py +0 -0
  216. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/job.py +0 -0
  217. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/job_messages.py +0 -0
  218. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/llm_batch_items.py +0 -0
  219. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/llm_batch_job.py +0 -0
  220. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/mcp_oauth.py +0 -0
  221. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/mcp_server.py +0 -0
  222. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/message.py +0 -0
  223. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/mixins.py +0 -0
  224. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/organization.py +0 -0
  225. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/passage.py +0 -0
  226. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/prompt.py +0 -0
  227. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/provider.py +0 -0
  228. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/provider_trace.py +0 -0
  229. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/source.py +0 -0
  230. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/sources_agents.py +0 -0
  231. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/sqlalchemy_base.py +0 -0
  232. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/step.py +0 -0
  233. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/tool.py +0 -0
  234. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/tools_agents.py +0 -0
  235. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/orm/user.py +0 -0
  236. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/__init__.py +0 -0
  237. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/context.py +0 -0
  238. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/db_pool_monitoring.py +0 -0
  239. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/events.py +0 -0
  240. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/metric_registry.py +0 -0
  241. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/metrics.py +0 -0
  242. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/resource.py +0 -0
  243. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/sqlalchemy_instrumentation.py +0 -0
  244. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/sqlalchemy_instrumentation_integration.py +0 -0
  245. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/otel/tracing.py +0 -0
  246. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/__init__.py +0 -0
  247. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/anna_pa.txt +0 -0
  248. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/google_search_persona.txt +0 -0
  249. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/memgpt_doc.txt +0 -0
  250. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/memgpt_starter.txt +0 -0
  251. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/o1_persona.txt +0 -0
  252. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/sam.txt +0 -0
  253. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/sam_pov.txt +0 -0
  254. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  255. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
  256. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
  257. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/sqldb/test.db +0 -0
  258. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/personas/examples/voice_memory_persona.txt +0 -0
  259. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/plugins/README.md +0 -0
  260. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/plugins/__init__.py +0 -0
  261. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/plugins/defaults.py +0 -0
  262. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/plugins/plugins.py +0 -0
  263. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/__init__.py +0 -0
  264. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/gpt_summarize.py +0 -0
  265. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/gpt_system.py +0 -0
  266. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_base.txt +0 -0
  267. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_chat.txt +0 -0
  268. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  269. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  270. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  271. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_doc.txt +0 -0
  272. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  273. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  274. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  275. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  276. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  277. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  278. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  279. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
  280. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/memgpt_v2_chat.txt +0 -0
  281. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/react.txt +0 -0
  282. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/sleeptime.txt +0 -0
  283. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
  284. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/sleeptime_v2.txt +0 -0
  285. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/summary_system_prompt.txt +0 -0
  286. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/voice_chat.txt +0 -0
  287. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/voice_sleeptime.txt +0 -0
  288. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/prompts/system/workflow.txt +0 -0
  289. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/pytest.ini +0 -0
  290. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/agent_file.py +0 -0
  291. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/block.py +0 -0
  292. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/embedding_config.py +0 -0
  293. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/embedding_config_overrides.py +0 -0
  294. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/environment_variables.py +0 -0
  295. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/folder.py +0 -0
  296. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/group.py +0 -0
  297. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/health.py +0 -0
  298. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/identity.py +0 -0
  299. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/job.py +0 -0
  300. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/letta_base.py +0 -0
  301. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/letta_message.py +0 -0
  302. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/letta_message_content.py +0 -0
  303. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/letta_response.py +0 -0
  304. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/llm_batch_job.py +0 -0
  305. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/llm_config_overrides.py +0 -0
  306. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/message.py +0 -0
  307. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/openai/chat_completion_request.py +0 -0
  308. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/openai/chat_completion_response.py +0 -0
  309. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/openai/chat_completions.py +0 -0
  310. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/openai/embedding_response.py +0 -0
  311. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/openai/openai.py +0 -0
  312. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/organization.py +0 -0
  313. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/passage.py +0 -0
  314. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/pip_requirement.py +0 -0
  315. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/prompt.py +0 -0
  316. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/provider_trace.py +0 -0
  317. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/__init__.py +0 -0
  318. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/anthropic.py +0 -0
  319. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/azure.py +0 -0
  320. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/base.py +0 -0
  321. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/bedrock.py +0 -0
  322. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/cerebras.py +0 -0
  323. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/cohere.py +0 -0
  324. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/deepseek.py +0 -0
  325. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/google_gemini.py +0 -0
  326. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/google_vertex.py +0 -0
  327. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/groq.py +0 -0
  328. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/letta.py +0 -0
  329. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/mistral.py +0 -0
  330. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/openai.py +0 -0
  331. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/together.py +0 -0
  332. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/vllm.py +0 -0
  333. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers/xai.py +0 -0
  334. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/providers.py +0 -0
  335. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/response_format.py +0 -0
  336. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/run.py +0 -0
  337. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/source.py +0 -0
  338. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/source_metadata.py +0 -0
  339. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/step.py +0 -0
  340. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/tool.py +0 -0
  341. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/tool_execution_result.py +0 -0
  342. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/tool_rule.py +0 -0
  343. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/usage.py +0 -0
  344. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/schemas/user.py +0 -0
  345. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/__init__.py +0 -0
  346. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  347. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  348. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_base.py +0 -0
  349. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_block.py +0 -0
  350. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  351. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_message.py +0 -0
  352. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  353. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  354. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  355. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/__init__.py +0 -0
  356. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/constants.py +0 -0
  357. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/db.py +0 -0
  358. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/generate_openapi_schema.sh +0 -0
  359. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/__init__.py +0 -0
  360. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/auth/__init__.py +0 -0
  361. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/auth/index.py +0 -0
  362. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/auth_token.py +0 -0
  363. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/chat_completions_interface.py +0 -0
  364. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/interface.py +0 -0
  365. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/json_parser.py +0 -0
  366. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/middleware/__init__.py +0 -0
  367. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/middleware/check_password.py +0 -0
  368. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/middleware/profiler_context.py +0 -0
  369. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/__init__.py +0 -0
  370. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  371. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  372. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  373. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
  374. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/folders.py +0 -0
  375. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/groups.py +0 -0
  376. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/health.py +0 -0
  377. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/identities.py +0 -0
  378. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  379. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/llms.py +0 -0
  380. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/messages.py +0 -0
  381. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  382. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/providers.py +0 -0
  383. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/runs.py +0 -0
  384. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/sources.py +0 -0
  385. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/steps.py +0 -0
  386. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/tags.py +0 -0
  387. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/telemetry.py +0 -0
  388. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/users.py +0 -0
  389. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/routers/v1/voice.py +0 -0
  390. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/static_files.py +0 -0
  391. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/rest_api/utils.py +0 -0
  392. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/startup.sh +0 -0
  393. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/static_files/assets/index-048c9598.js +0 -0
  394. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  395. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/static_files/favicon.ico +0 -0
  396. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/static_files/index.html +0 -0
  397. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  398. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/utils.py +0 -0
  399. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/ws_api/__init__.py +0 -0
  400. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/ws_api/example_client.py +0 -0
  401. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/ws_api/interface.py +0 -0
  402. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/ws_api/protocol.py +0 -0
  403. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/server/ws_api/server.py +0 -0
  404. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/__init__.py +0 -0
  405. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/agent_file_manager.py +0 -0
  406. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/agent_serialization_manager.py +0 -0
  407. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/context_window_calculator/__init__.py +0 -0
  408. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/context_window_calculator/context_window_calculator.py +0 -0
  409. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/context_window_calculator/token_counter.py +0 -0
  410. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_manager.py +0 -0
  411. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/__init__.py +0 -0
  412. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/chunker/__init__.py +0 -0
  413. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/chunker/llama_index_chunker.py +0 -0
  414. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/embedder/__init__.py +0 -0
  415. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/embedder/base_embedder.py +0 -0
  416. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/embedder/openai_embedder.py +0 -0
  417. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/embedder/pinecone_embedder.py +0 -0
  418. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/parser/__init__.py +0 -0
  419. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/parser/base_parser.py +0 -0
  420. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/parser/markitdown_parser.py +0 -0
  421. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/parser/mistral_parser.py +0 -0
  422. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/file_processor/types.py +0 -0
  423. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/group_manager.py +0 -0
  424. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/helpers/tool_execution_helper.py +0 -0
  425. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/helpers/tool_parser_helper.py +0 -0
  426. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/identity_manager.py +0 -0
  427. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/llm_batch_manager.py +0 -0
  428. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/__init__.py +0 -0
  429. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/base_client.py +0 -0
  430. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/sse_client.py +0 -0
  431. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/stdio_client.py +0 -0
  432. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/streamable_http_client.py +0 -0
  433. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/mcp/types.py +0 -0
  434. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/message_manager.py +0 -0
  435. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/organization_manager.py +0 -0
  436. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/passage_manager.py +0 -0
  437. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/per_agent_lock_manager.py +0 -0
  438. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/provider_manager.py +0 -0
  439. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/source_manager.py +0 -0
  440. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/step_manager.py +0 -0
  441. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/summarizer/__init__.py +0 -0
  442. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/summarizer/enums.py +0 -0
  443. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/summarizer/summarizer.py +0 -0
  444. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/telemetry_manager.py +0 -0
  445. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/__init__.py +0 -0
  446. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/composio_tool_executor.py +0 -0
  447. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/core_tool_executor.py +0 -0
  448. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/multi_agent_tool_executor.py +0 -0
  449. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_executor/tool_executor_base.py +0 -0
  450. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/tool_sandbox/__init__.py +0 -0
  451. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/services/user_manager.py +0 -0
  452. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/streaming_interface.py +0 -0
  453. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/streaming_utils.py +0 -0
  454. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/templates/__init__.py +0 -0
  455. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/templates/sandbox_code_file.py.j2 +0 -0
  456. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/templates/sandbox_code_file_async.py.j2 +0 -0
  457. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/templates/summary_request_text.j2 +0 -0
  458. {letta_nightly-0.9.1.dev20250731104458 → letta_nightly-0.10.0.dev20250801010504}/letta/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.9.1.dev20250731104458
3
+ Version: 0.10.0.dev20250801010504
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -47,7 +47,7 @@ Requires-Dist: fastapi (>=0.115.6,<0.116.0) ; extra == "server" or extra == "des
47
47
  Requires-Dist: firecrawl-py (>=2.8.0,<3.0.0) ; extra == "external-tools"
48
48
  Requires-Dist: google-cloud-profiler (>=4.1.0,<5.0.0) ; extra == "experimental" or extra == "all"
49
49
  Requires-Dist: google-genai (>=1.15.0,<2.0.0) ; extra == "google"
50
- Requires-Dist: granian[reload,uvloop] (>=2.3.2,<3.0.0) ; extra == "experimental" or extra == "all"
50
+ Requires-Dist: granian[reload] (>=2.3.2,<3.0.0) ; extra == "experimental" or extra == "all"
51
51
  Requires-Dist: grpcio (>=1.68.1,<2.0.0)
52
52
  Requires-Dist: grpcio-tools (>=1.68.1,<2.0.0)
53
53
  Requires-Dist: html2text (>=2020.1.16,<2021.0.0)
@@ -66,6 +66,7 @@ Requires-Dist: marshmallow-sqlalchemy (>=1.4.1,<2.0.0)
66
66
  Requires-Dist: matplotlib (>=3.10.1,<4.0.0)
67
67
  Requires-Dist: mcp[cli] (>=1.9.4,<2.0.0)
68
68
  Requires-Dist: mistralai (>=1.8.1,<2.0.0)
69
+ Requires-Dist: modal (>=1.1.0,<2.0.0) ; extra == "cloud-tool-sandbox"
69
70
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
70
71
  Requires-Dist: numpy (>=2.1.0,<3.0.0)
71
72
  Requires-Dist: openai (>=1.60.0,<2.0.0)
@@ -74,6 +75,7 @@ Requires-Dist: opentelemetry-exporter-otlp (==1.30.0)
74
75
  Requires-Dist: opentelemetry-instrumentation-requests (==0.51b0)
75
76
  Requires-Dist: opentelemetry-instrumentation-sqlalchemy (==0.51b0)
76
77
  Requires-Dist: opentelemetry-sdk (==1.30.0)
78
+ Requires-Dist: orjson (>=3.11.1,<4.0.0)
77
79
  Requires-Dist: pathvalidate (>=3.2.1,<4.0.0)
78
80
  Requires-Dist: pexpect (>=4.9.0,<5.0.0) ; extra == "dev" or extra == "all"
79
81
  Requires-Dist: pg8000 (>=1.30.3,<2.0.0) ; extra == "postgres" or extra == "all"
@@ -101,13 +103,15 @@ Requires-Dist: setuptools (>=70,<71)
101
103
  Requires-Dist: sqlalchemy-json (>=0.7.0,<0.8.0)
102
104
  Requires-Dist: sqlalchemy-utils (>=0.41.2,<0.42.0)
103
105
  Requires-Dist: sqlalchemy[asyncio] (>=2.0.41,<3.0.0)
106
+ Requires-Dist: sqlite-vec (>=0.1.7a2,<0.2.0) ; extra == "desktop"
104
107
  Requires-Dist: sqlmodel (>=0.0.16,<0.0.17)
105
108
  Requires-Dist: structlog (>=25.4.0,<26.0.0)
106
109
  Requires-Dist: tavily-python (>=0.7.2,<0.8.0)
107
110
  Requires-Dist: tqdm (>=4.66.1,<5.0.0)
111
+ Requires-Dist: turbopuffer (>=0.5.17,<0.6.0) ; extra == "all"
108
112
  Requires-Dist: typer (>=0.15.2,<0.16.0)
109
113
  Requires-Dist: uvicorn (>=0.24.0.post1,<0.25.0) ; extra == "server" or extra == "desktop" or extra == "all"
110
- Requires-Dist: uvloop (>=0.21.0,<0.22.0) ; extra == "experimental" or extra == "all"
114
+ Requires-Dist: uvloop (>=0.21.0,<0.22.0) ; (sys_platform != "win32") and (extra == "experimental" or extra == "all")
111
115
  Requires-Dist: wikipedia (>=1.4.0,<2.0.0) ; extra == "external-tools" or extra == "tests" or extra == "desktop" or extra == "all"
112
116
  Description-Content-Type: text/markdown
113
117
 
@@ -5,7 +5,7 @@ try:
5
5
  __version__ = version("letta")
6
6
  except PackageNotFoundError:
7
7
  # Fallback for development installations
8
- __version__ = "0.9.1"
8
+ __version__ = "0.10.0"
9
9
 
10
10
  if os.environ.get("LETTA_VERSION"):
11
11
  __version__ = os.environ["LETTA_VERSION"]
@@ -24,6 +24,7 @@ from letta.schemas.enums import JobStatus
24
24
  from letta.schemas.file import FileMetadata
25
25
  from letta.schemas.job import Job
26
26
  from letta.schemas.letta_message import LettaMessage
27
+ from letta.schemas.letta_ping import LettaPing
27
28
  from letta.schemas.letta_stop_reason import LettaStopReason
28
29
  from letta.schemas.llm_config import LLMConfig
29
30
  from letta.schemas.memory import ArchivalMemorySummary, BasicBlockMemory, ChatMemory, Memory, RecallMemorySummary
@@ -1298,7 +1298,7 @@ class Agent(BaseAgent):
1298
1298
  )
1299
1299
 
1300
1300
  async def get_context_window_async(self) -> ContextWindowOverview:
1301
- if os.getenv("LETTA_ENVIRONMENT") == "PRODUCTION":
1301
+ if os.getenv("LETTA_ENVIRONMENT") == "PRODUCTION" and os.getenv("ANTHROPIC_API_KEY"):
1302
1302
  return await self.get_context_window_from_anthropic_async()
1303
1303
  return await self.get_context_window_from_tiktoken_async()
1304
1304
 
@@ -17,7 +17,7 @@ from letta.schemas.message import Message, MessageCreate, MessageUpdate
17
17
  from letta.schemas.usage import LettaUsageStatistics
18
18
  from letta.schemas.user import User
19
19
  from letta.services.agent_manager import AgentManager
20
- from letta.services.helpers.agent_manager_helper import compile_system_message
20
+ from letta.services.helpers.agent_manager_helper import compile_system_message_async
21
21
  from letta.services.message_manager import MessageManager
22
22
  from letta.services.passage_manager import PassageManager
23
23
  from letta.utils import united_diff
@@ -142,7 +142,7 @@ class BaseAgent(ABC):
142
142
  if num_archival_memories is None:
143
143
  num_archival_memories = await self.passage_manager.agent_passage_size_async(actor=self.actor, agent_id=agent_state.id)
144
144
 
145
- new_system_message_str = compile_system_message(
145
+ new_system_message_str = await compile_system_message_async(
146
146
  system_prompt=agent_state.system,
147
147
  in_context_memory=agent_state.memory,
148
148
  in_context_memory_last_edit=memory_edit_timestamp,
@@ -22,6 +22,7 @@ from letta.constants import DEFAULT_MAX_STEPS, NON_USER_MSG_PREFIX
22
22
  from letta.errors import ContextWindowExceededError
23
23
  from letta.helpers import ToolRulesSolver
24
24
  from letta.helpers.datetime_helpers import AsyncTimer, get_utc_time, get_utc_timestamp_ns, ns_to_ms
25
+ from letta.helpers.reasoning_helper import scrub_inner_thoughts_from_messages
25
26
  from letta.helpers.tool_execution_helper import enable_strict_mode
26
27
  from letta.interfaces.anthropic_streaming_interface import AnthropicStreamingInterface
27
28
  from letta.interfaces.openai_streaming_interface import OpenAIStreamingInterface
@@ -756,6 +757,9 @@ class LettaAgent(BaseAgent):
756
757
  interface = OpenAIStreamingInterface(
757
758
  use_assistant_message=use_assistant_message,
758
759
  put_inner_thoughts_in_kwarg=agent_state.llm_config.put_inner_thoughts_in_kwargs,
760
+ is_openai_proxy=agent_state.llm_config.provider_name == "lmstudio_openai",
761
+ messages=current_in_context_messages + new_in_context_messages,
762
+ tools=request_data.get("tools", []),
759
763
  )
760
764
  else:
761
765
  raise ValueError(f"Streaming not supported for {agent_state.llm_config}")
@@ -781,13 +785,20 @@ class LettaAgent(BaseAgent):
781
785
 
782
786
  stream_end_time_ns = get_utc_timestamp_ns()
783
787
 
784
- # update usage
788
+ # Some providers that rely on the OpenAI client currently e.g. LMStudio don't get usage metrics back on the last streaming chunk, fall back to manual values
789
+ if isinstance(interface, OpenAIStreamingInterface) and not interface.input_tokens and not interface.output_tokens:
790
+ logger.warning(
791
+ f"No token usage metrics received from OpenAI streaming interface for {agent_state.llm_config.model}, falling back to estimated values. Input tokens: {interface.fallback_input_tokens}, Output tokens: {interface.fallback_output_tokens}"
792
+ )
793
+ interface.input_tokens = interface.fallback_input_tokens
794
+ interface.output_tokens = interface.fallback_output_tokens
795
+
785
796
  usage.step_count += 1
786
797
  usage.completion_tokens += interface.output_tokens
787
798
  usage.prompt_tokens += interface.input_tokens
788
799
  usage.total_tokens += interface.input_tokens + interface.output_tokens
789
800
  MetricRegistry().message_output_tokens.record(
790
- interface.output_tokens, dict(get_ctx_attributes(), **{"model.name": agent_state.llm_config.model})
801
+ usage.completion_tokens, dict(get_ctx_attributes(), **{"model.name": agent_state.llm_config.model})
791
802
  )
792
803
 
793
804
  # log LLM request time
@@ -814,9 +825,9 @@ class LettaAgent(BaseAgent):
814
825
  agent_state,
815
826
  tool_rules_solver,
816
827
  UsageStatistics(
817
- completion_tokens=interface.output_tokens,
818
- prompt_tokens=interface.input_tokens,
819
- total_tokens=interface.input_tokens + interface.output_tokens,
828
+ completion_tokens=usage.completion_tokens,
829
+ prompt_tokens=usage.prompt_tokens,
830
+ total_tokens=usage.total_tokens,
820
831
  ),
821
832
  reasoning_content=reasoning_content,
822
833
  pre_computed_assistant_message_id=interface.letta_message_id,
@@ -861,8 +872,8 @@ class LettaAgent(BaseAgent):
861
872
  # "stop_sequence": None,
862
873
  "type": "message",
863
874
  "usage": {
864
- "input_tokens": interface.input_tokens,
865
- "output_tokens": interface.output_tokens,
875
+ "input_tokens": usage.prompt_tokens,
876
+ "output_tokens": usage.completion_tokens,
866
877
  },
867
878
  },
868
879
  step_id=step_id,
@@ -1130,7 +1141,7 @@ class LettaAgent(BaseAgent):
1130
1141
  return new_in_context_messages
1131
1142
 
1132
1143
  @trace_method
1133
- async def summarize_conversation_history(self) -> AgentState:
1144
+ async def summarize_conversation_history(self) -> None:
1134
1145
  """Called when the developer explicitly triggers compaction via the API"""
1135
1146
  agent_state = await self.agent_manager.get_agent_by_id_async(agent_id=self.agent_id, actor=self.actor)
1136
1147
  message_ids = agent_state.message_ids
@@ -1169,6 +1180,9 @@ class LettaAgent(BaseAgent):
1169
1180
  tool_rules_solver=tool_rules_solver,
1170
1181
  )
1171
1182
 
1183
+ # scrub inner thoughts from messages if reasoning is completely disabled
1184
+ in_context_messages = scrub_inner_thoughts_from_messages(in_context_messages, agent_state.llm_config)
1185
+
1172
1186
  tools = [
1173
1187
  t
1174
1188
  for t in agent_state.tools
@@ -19,7 +19,7 @@ from letta.log import get_logger
19
19
  from letta.orm.enums import ToolType
20
20
  from letta.otel.tracing import log_event, trace_method
21
21
  from letta.schemas.agent import AgentState
22
- from letta.schemas.enums import AgentStepStatus, JobStatus, MessageStreamStatus, ProviderType
22
+ from letta.schemas.enums import AgentStepStatus, JobStatus, MessageStreamStatus, ProviderType, SandboxType
23
23
  from letta.schemas.job import JobUpdate
24
24
  from letta.schemas.letta_message import LegacyLettaMessage, LettaMessage
25
25
  from letta.schemas.letta_message_content import OmittedReasoningContent, ReasoningContent, RedactedReasoningContent, TextContent
@@ -28,7 +28,7 @@ from letta.schemas.letta_response import LettaBatchResponse, LettaResponse
28
28
  from letta.schemas.llm_batch_job import AgentStepState, LLMBatchItem
29
29
  from letta.schemas.message import Message, MessageCreate
30
30
  from letta.schemas.openai.chat_completion_response import ToolCall as OpenAIToolCall
31
- from letta.schemas.sandbox_config import SandboxConfig, SandboxType
31
+ from letta.schemas.sandbox_config import SandboxConfig
32
32
  from letta.schemas.tool_execution_result import ToolExecutionResult
33
33
  from letta.schemas.user import User
34
34
  from letta.server.rest_api.utils import create_heartbeat_system_message, create_letta_messages_from_llm_response
@@ -36,7 +36,7 @@ from letta.server.rest_api.utils import (
36
36
  )
37
37
  from letta.services.agent_manager import AgentManager
38
38
  from letta.services.block_manager import BlockManager
39
- from letta.services.helpers.agent_manager_helper import compile_system_message
39
+ from letta.services.helpers.agent_manager_helper import compile_system_message_async
40
40
  from letta.services.job_manager import JobManager
41
41
  from letta.services.message_manager import MessageManager
42
42
  from letta.services.passage_manager import PassageManager
@@ -145,7 +145,7 @@ class VoiceAgent(BaseAgent):
145
145
 
146
146
  in_context_messages = await self.message_manager.get_messages_by_ids_async(message_ids=agent_state.message_ids, actor=self.actor)
147
147
  memory_edit_timestamp = get_utc_time()
148
- in_context_messages[0].content[0].text = compile_system_message(
148
+ in_context_messages[0].content[0].text = await compile_system_message_async(
149
149
  system_prompt=agent_state.system,
150
150
  in_context_memory=agent_state.memory,
151
151
  in_context_memory_last_edit=memory_edit_timestamp,
@@ -1,4 +1,3 @@
1
- import sys
2
1
  import time
3
2
  from typing import Callable, Dict, List, Optional, Union
4
3
 
@@ -33,16 +32,6 @@ from letta.schemas.tool import Tool, ToolCreate, ToolUpdate
33
32
  from letta.schemas.tool_rule import BaseToolRule
34
33
  from letta.utils import get_human_text, get_persona_text
35
34
 
36
- # Print deprecation notice in yellow when module is imported
37
- print(
38
- "\n\n\033[93m"
39
- + "DEPRECATION WARNING: This legacy Python client has been deprecated and will be removed in a future release.\n"
40
- + "Please migrate to the new official python SDK by running: pip install letta-client\n"
41
- + "For further documentation, visit: https://docs.letta.com/api-reference/overview#python-sdk"
42
- + "\033[0m\n\n",
43
- file=sys.stderr,
44
- )
45
-
46
35
 
47
36
  class AbstractClient(object):
48
37
  def __init__(
@@ -49,6 +49,17 @@ class LettaToolCreateError(LettaError):
49
49
  super().__init__(message=message or self.default_error_message)
50
50
 
51
51
 
52
+ class LettaToolNameConflictError(LettaError):
53
+ """Error raised when a tool name already exists."""
54
+
55
+ def __init__(self, tool_name: str):
56
+ super().__init__(
57
+ message=f"Tool with name '{tool_name}' already exists in your organization",
58
+ code=ErrorCode.INVALID_ARGUMENT,
59
+ details={"tool_name": tool_name},
60
+ )
61
+
62
+
52
63
  class LettaConfigurationError(LettaError):
53
64
  """Error raised when there are configuration-related issues."""
54
65
 
@@ -17,11 +17,7 @@ def run_code(code: str, language: Literal["python", "js", "ts", "r", "java"]) ->
17
17
  raise NotImplementedError("This is only available on the latest agent architecture. Please contact the Letta team.")
18
18
 
19
19
 
20
- async def web_search(
21
- tasks: List[SearchTask],
22
- limit: int = 3,
23
- return_raw: bool = False,
24
- ) -> str:
20
+ async def web_search(tasks: List[SearchTask], limit: int = 1, return_raw: bool = True) -> str:
25
21
  """
26
22
  Search the web with a list of query/question pairs and extract passages that answer the corresponding questions.
27
23
 
@@ -39,9 +35,9 @@ async def web_search(
39
35
 
40
36
  Args:
41
37
  tasks (List[SearchTask]): A list of search tasks, each containing a `query` and a corresponding `question`.
42
- limit (int, optional): Maximum number of URLs to fetch and analyse per task (must be > 0). Defaults to 3.
38
+ limit (int, optional): Maximum number of URLs to fetch and analyse per task (must be > 0). Defaults to 1.
43
39
  return_raw (bool, optional): If set to True, returns the raw content of the web pages.
44
- This should be False unless otherwise specified by the user. Defaults to False.
40
+ This should be True unless otherwise specified by the user. Defaults to True.
45
41
 
46
42
  Returns:
47
43
  str: A JSON-encoded string containing a list of search results.
@@ -1,5 +1,7 @@
1
+ import re
2
+ from abc import abstractmethod
1
3
  from enum import Enum
2
- from typing import List, Optional
4
+ from typing import Dict, List, Optional
3
5
 
4
6
  from mcp import Tool
5
7
  from pydantic import BaseModel, Field
@@ -7,6 +9,9 @@ from pydantic import BaseModel, Field
7
9
  # MCP Authentication Constants
8
10
  MCP_AUTH_HEADER_AUTHORIZATION = "Authorization"
9
11
  MCP_AUTH_TOKEN_BEARER_PREFIX = "Bearer"
12
+ TEMPLATED_VARIABLE_REGEX = (
13
+ r"\{\{\s*([A-Z_][A-Z0-9_]*)\s*(?:\|\s*([^}]+?)\s*)?\}\}" # Allows for optional whitespace around the variable name and default value
14
+ )
10
15
 
11
16
 
12
17
  class MCPTool(Tool):
@@ -23,6 +28,91 @@ class BaseServerConfig(BaseModel):
23
28
  server_name: str = Field(..., description="The name of the server")
24
29
  type: MCPServerType
25
30
 
31
+ def is_templated_tool_variable(self, value: str) -> bool:
32
+ """
33
+ Check if string contains templated variables.
34
+
35
+ Args:
36
+ value: The value string to check
37
+
38
+ Returns:
39
+ True if the value contains templated variables in the format {{ VARIABLE_NAME }} or {{ VARIABLE_NAME | default }}, False otherwise
40
+ """
41
+ return bool(re.search(TEMPLATED_VARIABLE_REGEX, value))
42
+
43
+ def get_tool_variable(self, value: str, environment_variables: Dict[str, str]) -> Optional[str]:
44
+ """
45
+ Replace templated variables in a value string with their values from environment variables.
46
+ Supports fallback/default values with pipe syntax.
47
+
48
+ Args:
49
+ value: The value string that may contain templated variables (e.g., "Bearer {{ API_KEY | default_token }}")
50
+ environment_variables: Dictionary of environment variables
51
+
52
+ Returns:
53
+ The string with templated variables replaced, or None if no templated variables found
54
+ """
55
+
56
+ # If no templated variables found or default value provided, return the original value
57
+ if not self.is_templated_tool_variable(value):
58
+ return value
59
+
60
+ def replace_template(match):
61
+ variable_name = match.group(1)
62
+ default_value = match.group(2) if match.group(2) else None
63
+
64
+ # Try to get the value from environment variables
65
+ env_value = environment_variables.get(variable_name) if environment_variables else None
66
+
67
+ # Return environment value if found, otherwise return default value, otherwise return empty string
68
+ if env_value is not None:
69
+ return env_value
70
+ elif default_value is not None:
71
+ return default_value
72
+ else:
73
+ # If no environment value and no default, return the original template
74
+ return match.group(0)
75
+
76
+ # Replace all templated variables in the token
77
+ result = re.sub(TEMPLATED_VARIABLE_REGEX, replace_template, value)
78
+
79
+ # If the result still contains unreplaced templates, just return original value
80
+ if re.search(TEMPLATED_VARIABLE_REGEX, result):
81
+ logger.warning(f"Unable to resolve templated variable in value: {value}")
82
+ return value
83
+
84
+ return result
85
+
86
+ def resolve_custom_headers(
87
+ self, custom_headers: Optional[Dict[str, str]], environment_variables: Optional[Dict[str, str]] = None
88
+ ) -> Optional[Dict[str, str]]:
89
+ """
90
+ Resolve templated variables in custom headers dictionary.
91
+
92
+ Args:
93
+ custom_headers: Dictionary of custom headers that may contain templated variables
94
+ environment_variables: Dictionary of environment variables for resolving templates
95
+
96
+ Returns:
97
+ Dictionary with resolved header values, or None if custom_headers is None
98
+ """
99
+ if custom_headers is None:
100
+ return None
101
+
102
+ resolved_headers = {}
103
+ for key, value in custom_headers.items():
104
+ # Resolve templated variables in each header value
105
+ if self.is_templated_tool_variable(value):
106
+ resolved_headers[key] = self.get_tool_variable(value, environment_variables)
107
+ else:
108
+ resolved_headers[key] = value
109
+
110
+ return resolved_headers
111
+
112
+ @abstractmethod
113
+ def resolve_environment_variables(self, environment_variables: Optional[Dict[str, str]] = None) -> None:
114
+ raise NotImplementedError
115
+
26
116
 
27
117
  class SSEServerConfig(BaseServerConfig):
28
118
  """
@@ -47,6 +137,12 @@ class SSEServerConfig(BaseServerConfig):
47
137
  return self.auth_token[len(f"{MCP_AUTH_TOKEN_BEARER_PREFIX} ") :]
48
138
  return self.auth_token
49
139
 
140
+ def resolve_environment_variables(self, environment_variables: Optional[Dict[str, str]] = None) -> None:
141
+ if self.auth_token and super().is_templated_tool_variable(self.auth_token):
142
+ self.auth_token = super().get_tool_variable(self.auth_token, environment_variables)
143
+
144
+ self.custom_headers = super().resolve_custom_headers(self.custom_headers, environment_variables)
145
+
50
146
  def to_dict(self) -> dict:
51
147
  values = {
52
148
  "transport": "sse",
@@ -72,6 +168,10 @@ class StdioServerConfig(BaseServerConfig):
72
168
  args: List[str] = Field(..., description="The arguments to pass to the command")
73
169
  env: Optional[dict[str, str]] = Field(None, description="Environment variables to set")
74
170
 
171
+ # TODO: @jnjpng templated auth handling for stdio
172
+ def resolve_environment_variables(self, environment_variables: Optional[Dict[str, str]] = None) -> None:
173
+ pass
174
+
75
175
  def to_dict(self) -> dict:
76
176
  values = {
77
177
  "transport": "stdio",
@@ -106,6 +206,12 @@ class StreamableHTTPServerConfig(BaseServerConfig):
106
206
  return self.auth_token[len(f"{MCP_AUTH_TOKEN_BEARER_PREFIX} ") :]
107
207
  return self.auth_token
108
208
 
209
+ def resolve_environment_variables(self, environment_variables: Optional[Dict[str, str]] = None) -> None:
210
+ if self.auth_token and super().is_templated_tool_variable(self.auth_token):
211
+ self.auth_token = super().get_tool_variable(self.auth_token, environment_variables)
212
+
213
+ self.custom_headers = super().resolve_custom_headers(self.custom_headers, environment_variables)
214
+
109
215
  def model_post_init(self, __context) -> None:
110
216
  """Validate the server URL format."""
111
217
  # Basic validation for streamable HTTP URLs
@@ -0,0 +1,48 @@
1
+ from typing import List
2
+
3
+ from letta.schemas.enums import MessageRole
4
+ from letta.schemas.letta_message_content import TextContent
5
+ from letta.schemas.llm_config import LLMConfig
6
+ from letta.schemas.message import Message
7
+
8
+
9
+ def is_reasoning_completely_disabled(llm_config: LLMConfig) -> bool:
10
+ """
11
+ Check if reasoning is completely disabled by verifying all three conditions:
12
+ - put_inner_thoughts_in_kwargs is False
13
+ - enable_reasoner is False
14
+ - max_reasoning_tokens is 0
15
+
16
+ Args:
17
+ llm_config: The LLM configuration to check
18
+
19
+ Returns:
20
+ True if reasoning is completely disabled, False otherwise
21
+ """
22
+ return llm_config.put_inner_thoughts_in_kwargs is False and llm_config.enable_reasoner is False and llm_config.max_reasoning_tokens == 0
23
+
24
+
25
+ def scrub_inner_thoughts_from_messages(messages: List[Message], llm_config: LLMConfig) -> List[Message]:
26
+ """
27
+ Remove inner thoughts (reasoning text) from assistant messages when reasoning is completely disabled.
28
+ This makes the LLM think reasoning was never enabled by presenting clean message history.
29
+
30
+ Args:
31
+ messages: List of messages to potentially scrub
32
+ llm_config: The LLM configuration to check
33
+
34
+ Returns:
35
+ The message list with inner thoughts removed if reasoning is disabled, otherwise unchanged
36
+ """
37
+ # early return if reasoning is not completely disabled
38
+ if not is_reasoning_completely_disabled(llm_config):
39
+ return messages
40
+
41
+ # process messages to remove inner thoughts from assistant messages
42
+ for message in messages:
43
+ if message.role == MessageRole.assistant and message.content and message.tool_calls:
44
+ # remove text content from assistant messages that also have tool calls
45
+ # keep only non-text content (if any)
46
+ message.content = [content for content in message.content if not isinstance(content, TextContent)]
47
+
48
+ return messages
@@ -1,17 +1,7 @@
1
1
  from collections import OrderedDict
2
2
  from typing import Any, Dict, Optional
3
3
 
4
- from letta.constants import COMPOSIO_ENTITY_ENV_VAR_KEY, PRE_EXECUTION_MESSAGE_ARG
5
- from letta.functions.ast_parsers import coerce_dict_args_by_annotations, get_function_annotations_from_source
6
- from letta.functions.composio_helpers import execute_composio_action, generate_composio_action_from_func_name
7
- from letta.helpers.composio_helpers import get_composio_api_key
8
- from letta.orm.enums import ToolType
9
- from letta.schemas.agent import AgentState
10
- from letta.schemas.sandbox_config import SandboxRunResult
11
- from letta.schemas.tool import Tool
12
- from letta.schemas.user import User
13
- from letta.services.tool_executor.tool_execution_sandbox import ToolExecutionSandbox
14
- from letta.utils import get_friendly_error_msg
4
+ from letta.constants import PRE_EXECUTION_MESSAGE_ARG
15
5
 
16
6
 
17
7
  def enable_strict_mode(tool_schema: Dict[str, Any]) -> Dict[str, Any]:
@@ -44,6 +34,7 @@ def add_pre_execution_message(tool_schema: Dict[str, Any], description: Optional
44
34
 
45
35
  Args:
46
36
  tool_schema (Dict[str, Any]): The original tool schema.
37
+ description (Optional[str]): Description of the tool schema. Defaults to None.
47
38
 
48
39
  Returns:
49
40
  Dict[str, Any]: A new tool schema with the `pre_execution_message` field added at the beginning.
@@ -117,57 +108,3 @@ def remove_request_heartbeat(tool_schema: Dict[str, Any]) -> Dict[str, Any]:
117
108
  schema["parameters"] = {**parameters, "properties": properties, "required": required}
118
109
 
119
110
  return schema
120
-
121
-
122
- # TODO: Deprecate the `execute_external_tool` function on the agent body
123
- def execute_external_tool(
124
- agent_state: AgentState,
125
- function_name: str,
126
- function_args: dict,
127
- target_letta_tool: Tool,
128
- actor: User,
129
- allow_agent_state_modifications: bool = False,
130
- ) -> tuple[Any, Optional[SandboxRunResult]]:
131
- # TODO: need to have an AgentState object that actually has full access to the block data
132
- # this is because the sandbox tools need to be able to access block.value to edit this data
133
- try:
134
- if target_letta_tool.tool_type == ToolType.EXTERNAL_COMPOSIO:
135
- action_name = generate_composio_action_from_func_name(target_letta_tool.name)
136
- # Get entity ID from the agent_state
137
- entity_id = None
138
- for env_var in agent_state.tool_exec_environment_variables:
139
- if env_var.key == COMPOSIO_ENTITY_ENV_VAR_KEY:
140
- entity_id = env_var.value
141
- # Get composio_api_key
142
- composio_api_key = get_composio_api_key(actor=actor)
143
- function_response = execute_composio_action(
144
- action_name=action_name, args=function_args, api_key=composio_api_key, entity_id=entity_id
145
- )
146
- return function_response, None
147
- elif target_letta_tool.tool_type == ToolType.CUSTOM:
148
- # Parse the source code to extract function annotations
149
- annotations = get_function_annotations_from_source(target_letta_tool.source_code, function_name)
150
- # Coerce the function arguments to the correct types based on the annotations
151
- function_args = coerce_dict_args_by_annotations(function_args, annotations)
152
-
153
- # execute tool in a sandbox
154
- # TODO: allow agent_state to specify which sandbox to execute tools in
155
- # TODO: This is only temporary, can remove after we publish a pip package with this object
156
- if allow_agent_state_modifications:
157
- agent_state_copy = agent_state.__deepcopy__()
158
- agent_state_copy.tools = []
159
- agent_state_copy.tool_rules = []
160
- else:
161
- agent_state_copy = None
162
-
163
- tool_execution_result = ToolExecutionSandbox(function_name, function_args, actor).run(agent_state=agent_state_copy)
164
- function_response, updated_agent_state = tool_execution_result.func_return, tool_execution_result.agent_state
165
- # TODO: Bring this back
166
- # if allow_agent_state_modifications and updated_agent_state is not None:
167
- # self.update_memory_if_changed(updated_agent_state.memory)
168
- return function_response, tool_execution_result
169
- except Exception as e:
170
- # Need to catch error here, or else trunction wont happen
171
- # TODO: modify to function execution error
172
- function_response = get_friendly_error_msg(function_name=function_name, exception_name=type(e).__name__, exception_message=str(e))
173
- return function_response, None
@@ -9,6 +9,7 @@ from openai.types.chat.chat_completion_chunk import ChatCompletionChunk
9
9
  from letta.constants import DEFAULT_MESSAGE_TOOL, DEFAULT_MESSAGE_TOOL_KWARG
10
10
  from letta.helpers.datetime_helpers import get_utc_timestamp_ns, ns_to_ms
11
11
  from letta.llm_api.openai_client import is_openai_reasoning_model
12
+ from letta.local_llm.utils import num_tokens_from_functions, num_tokens_from_messages
12
13
  from letta.log import get_logger
13
14
  from letta.otel.context import get_ctx_attributes
14
15
  from letta.otel.metric_registry import MetricRegistry
@@ -19,6 +20,7 @@ from letta.schemas.message import Message
19
20
  from letta.schemas.openai.chat_completion_response import FunctionCall, ToolCall
20
21
  from letta.server.rest_api.json_parser import OptimisticJSONParser
21
22
  from letta.streaming_utils import JSONInnerThoughtsExtractor
23
+ from letta.utils import count_tokens
22
24
 
23
25
  logger = get_logger(__name__)
24
26
 
@@ -30,7 +32,14 @@ class OpenAIStreamingInterface:
30
32
  and detection of tool call events.
31
33
  """
32
34
 
33
- def __init__(self, use_assistant_message: bool = False, put_inner_thoughts_in_kwarg: bool = False):
35
+ def __init__(
36
+ self,
37
+ use_assistant_message: bool = False,
38
+ put_inner_thoughts_in_kwarg: bool = False,
39
+ is_openai_proxy: bool = False,
40
+ messages: Optional[list] = None,
41
+ tools: Optional[list] = None,
42
+ ):
34
43
  self.use_assistant_message = use_assistant_message
35
44
  self.assistant_message_tool_name = DEFAULT_MESSAGE_TOOL
36
45
  self.assistant_message_tool_kwarg = DEFAULT_MESSAGE_TOOL_KWARG
@@ -53,10 +62,19 @@ class OpenAIStreamingInterface:
53
62
  self.message_id = None
54
63
  self.model = None
55
64
 
56
- # token counters
65
+ # Token counters (from OpenAI usage)
57
66
  self.input_tokens = 0
58
67
  self.output_tokens = 0
59
68
 
69
+ # Fallback token counters (using tiktoken cl200k-base)
70
+ self.fallback_input_tokens = 0
71
+ self.fallback_output_tokens = 0
72
+
73
+ # Store messages and tools for fallback counting
74
+ self.is_openai_proxy = is_openai_proxy
75
+ self.messages = messages or []
76
+ self.tools = tools or []
77
+
60
78
  self.content_buffer: list[str] = []
61
79
  self.tool_call_name: str | None = None
62
80
  self.tool_call_id: str | None = None
@@ -95,6 +113,18 @@ class OpenAIStreamingInterface:
95
113
  Iterates over the OpenAI stream, yielding SSE events.
96
114
  It also collects tokens and detects if a tool call is triggered.
97
115
  """
116
+ # Fallback input token counting - this should only be required for non-OpenAI providers using the OpenAI client (e.g. LMStudio)
117
+ if self.is_openai_proxy:
118
+ if self.messages:
119
+ # Convert messages to dict format for token counting
120
+ message_dicts = [msg.to_openai_dict() if hasattr(msg, "to_openai_dict") else msg for msg in self.messages]
121
+ self.fallback_input_tokens = num_tokens_from_messages(message_dicts) # fallback to gpt-4 cl100k-base
122
+
123
+ if self.tools:
124
+ # Convert tools to dict format for token counting
125
+ tool_dicts = [tool["function"] if isinstance(tool, dict) and "function" in tool else tool for tool in self.tools]
126
+ self.fallback_input_tokens += num_tokens_from_functions(tool_dicts)
127
+
98
128
  first_chunk = True
99
129
  try:
100
130
  async with stream:
@@ -113,6 +143,9 @@ class OpenAIStreamingInterface:
113
143
  metric_attributes["model.name"] = chunk.model
114
144
  MetricRegistry().ttft_ms_histogram.record(ns_to_ms(ttft_ns), metric_attributes)
115
145
 
146
+ if self.is_openai_proxy:
147
+ self.fallback_output_tokens += count_tokens(chunk.model_dump_json())
148
+
116
149
  first_chunk = False
117
150
 
118
151
  if not self.model or not self.message_id:
@@ -153,6 +186,9 @@ class OpenAIStreamingInterface:
153
186
  tool_call.function.arguments
154
187
  )
155
188
 
189
+ if self.is_openai_proxy:
190
+ self.fallback_output_tokens += count_tokens(tool_call.function.arguments)
191
+
156
192
  # If we have inner thoughts, we should output them as a chunk
157
193
  if updates_inner_thoughts:
158
194
  if prev_message_type and prev_message_type != "reasoning_message":