letta-nightly 0.8.9.dev20250706104157__tar.gz → 0.8.10.dev20250707035305__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.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/PKG-INFO +2 -1
  2. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/__init__.py +1 -1
  3. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/letta_agent.py +24 -7
  4. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/voice_agent.py +1 -1
  5. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/voice_sleeptime_agent.py +1 -1
  6. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/constants.py +7 -0
  7. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/function_sets/files.py +2 -1
  8. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/functions.py +0 -1
  9. letta_nightly-0.8.10.dev20250707035305/letta/helpers/pinecone_utils.py +143 -0
  10. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/openai_client.py +4 -0
  11. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/file.py +4 -0
  12. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/gpt_summarize.py +4 -6
  13. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/file.py +6 -0
  14. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/letta_base.py +4 -4
  15. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/letta_message.py +15 -7
  16. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/letta_message_content.py +15 -15
  17. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/llm_config.py +4 -0
  18. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/message.py +35 -31
  19. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/providers.py +17 -10
  20. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/app.py +11 -0
  21. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/agents.py +19 -0
  22. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/sources.py +36 -7
  23. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_manager.py +8 -2
  24. letta_nightly-0.8.10.dev20250707035305/letta/services/file_processor/embedder/base_embedder.py +16 -0
  25. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/embedder/openai_embedder.py +3 -2
  26. letta_nightly-0.8.10.dev20250707035305/letta/services/file_processor/embedder/pinecone_embedder.py +74 -0
  27. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/file_processor.py +22 -22
  28. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/job_manager.py +0 -4
  29. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/source_manager.py +0 -1
  30. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/summarizer/enums.py +1 -0
  31. letta_nightly-0.8.10.dev20250707035305/letta/services/summarizer/summarizer.py +425 -0
  32. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/files_tool_executor.py +109 -3
  33. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/user_manager.py +0 -1
  34. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/settings.py +13 -1
  35. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/system.py +16 -0
  36. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/pyproject.toml +3 -1
  37. letta_nightly-0.8.9.dev20250706104157/letta/services/summarizer/summarizer.py +0 -194
  38. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/LICENSE +0 -0
  39. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/README.md +0 -0
  40. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agent.py +0 -0
  41. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/__init__.py +0 -0
  42. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/base_agent.py +0 -0
  43. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/ephemeral_agent.py +0 -0
  44. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/ephemeral_summary_agent.py +0 -0
  45. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/exceptions.py +0 -0
  46. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/helpers.py +0 -0
  47. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/agents/letta_agent_batch.py +0 -0
  48. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/cli/cli.py +0 -0
  49. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/cli/cli_load.py +0 -0
  50. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/client/__init__.py +0 -0
  51. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/client/client.py +0 -0
  52. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/client/streaming.py +0 -0
  53. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/client/utils.py +0 -0
  54. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/config.py +0 -0
  55. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/data_sources/__init__.py +0 -0
  56. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/data_sources/connectors.py +0 -0
  57. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/data_sources/connectors_helper.py +0 -0
  58. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/data_sources/redis_client.py +0 -0
  59. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/embeddings.py +0 -0
  60. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/errors.py +0 -0
  61. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/__init__.py +0 -0
  62. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/ast_parsers.py +0 -0
  63. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/async_composio_toolset.py +0 -0
  64. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/composio_helpers.py +0 -0
  65. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/function_sets/base.py +0 -0
  66. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/function_sets/builtin.py +0 -0
  67. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/function_sets/extras.py +0 -0
  68. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/function_sets/multi_agent.py +0 -0
  69. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/function_sets/voice.py +0 -0
  70. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/helpers.py +0 -0
  71. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/interface.py +0 -0
  72. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/mcp_client/__init__.py +0 -0
  73. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/mcp_client/base_client.py +0 -0
  74. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/mcp_client/exceptions.py +0 -0
  75. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/mcp_client/sse_client.py +0 -0
  76. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/mcp_client/stdio_client.py +0 -0
  77. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/mcp_client/types.py +0 -0
  78. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/prompts.py +0 -0
  79. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/schema_generator.py +0 -0
  80. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/functions/types.py +0 -0
  81. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/groups/dynamic_multi_agent.py +0 -0
  82. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/groups/helpers.py +0 -0
  83. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/groups/round_robin_multi_agent.py +0 -0
  84. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/groups/sleeptime_multi_agent.py +0 -0
  85. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/groups/sleeptime_multi_agent_v2.py +0 -0
  86. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/groups/supervisor_multi_agent.py +0 -0
  87. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/__init__.py +0 -0
  88. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/composio_helpers.py +0 -0
  89. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/converters.py +0 -0
  90. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/datetime_helpers.py +0 -0
  91. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/decorators.py +0 -0
  92. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/json_helpers.py +0 -0
  93. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/message_helper.py +0 -0
  94. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/singleton.py +0 -0
  95. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/tool_execution_helper.py +0 -0
  96. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/helpers/tool_rule_solver.py +0 -0
  97. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/humans/__init__.py +0 -0
  98. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/humans/examples/basic.txt +0 -0
  99. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/humans/examples/cs_phd.txt +0 -0
  100. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/interface.py +0 -0
  101. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/interfaces/__init__.py +0 -0
  102. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/interfaces/anthropic_streaming_interface.py +0 -0
  103. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
  104. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/interfaces/openai_streaming_interface.py +0 -0
  105. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/interfaces/utils.py +0 -0
  106. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/jobs/__init__.py +0 -0
  107. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/jobs/helpers.py +0 -0
  108. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/jobs/llm_batch_job_polling.py +0 -0
  109. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/jobs/scheduler.py +0 -0
  110. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/jobs/types.py +0 -0
  111. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/__init__.py +0 -0
  112. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/anthropic.py +0 -0
  113. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/anthropic_client.py +0 -0
  114. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/aws_bedrock.py +0 -0
  115. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/azure_openai.py +0 -0
  116. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/azure_openai_constants.py +0 -0
  117. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/bedrock_client.py +0 -0
  118. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/cohere.py +0 -0
  119. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/deepseek.py +0 -0
  120. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/google_ai_client.py +0 -0
  121. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/google_constants.py +0 -0
  122. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/google_vertex_client.py +0 -0
  123. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/helpers.py +0 -0
  124. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/llm_api_tools.py +0 -0
  125. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/llm_client.py +0 -0
  126. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/llm_client_base.py +0 -0
  127. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/mistral.py +0 -0
  128. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/llm_api/openai.py +0 -0
  129. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/README.md +0 -0
  130. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/__init__.py +0 -0
  131. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/chat_completion_proxy.py +0 -0
  132. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/constants.py +0 -0
  133. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/function_parser.py +0 -0
  134. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/grammars/__init__.py +0 -0
  135. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  136. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/grammars/json.gbnf +0 -0
  137. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  138. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/json_parser.py +0 -0
  139. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/koboldcpp/api.py +0 -0
  140. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/koboldcpp/settings.py +0 -0
  141. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llamacpp/api.py +0 -0
  142. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llamacpp/settings.py +0 -0
  143. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  144. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  145. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  146. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  147. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  148. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  149. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  150. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  151. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  152. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/lmstudio/api.py +0 -0
  153. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/lmstudio/settings.py +0 -0
  154. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/ollama/api.py +0 -0
  155. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/ollama/settings.py +0 -0
  156. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/settings/__init__.py +0 -0
  157. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  158. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/settings/settings.py +0 -0
  159. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/settings/simple.py +0 -0
  160. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/utils.py +0 -0
  161. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/vllm/api.py +0 -0
  162. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/webui/api.py +0 -0
  163. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/webui/legacy_api.py +0 -0
  164. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/webui/legacy_settings.py +0 -0
  165. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/local_llm/webui/settings.py +0 -0
  166. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/log.py +0 -0
  167. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/main.py +0 -0
  168. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/memory.py +0 -0
  169. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/openai_backcompat/__init__.py +0 -0
  170. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/openai_backcompat/openai_object.py +0 -0
  171. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/__all__.py +0 -0
  172. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/__init__.py +0 -0
  173. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/agent.py +0 -0
  174. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/agents_tags.py +0 -0
  175. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/base.py +0 -0
  176. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/block.py +0 -0
  177. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/block_history.py +0 -0
  178. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/blocks_agents.py +0 -0
  179. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/custom_columns.py +0 -0
  180. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/enums.py +0 -0
  181. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/errors.py +0 -0
  182. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/files_agents.py +0 -0
  183. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/group.py +0 -0
  184. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/groups_agents.py +0 -0
  185. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/groups_blocks.py +0 -0
  186. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/identities_agents.py +0 -0
  187. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/identities_blocks.py +0 -0
  188. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/identity.py +0 -0
  189. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/job.py +0 -0
  190. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/job_messages.py +0 -0
  191. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/llm_batch_items.py +0 -0
  192. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/llm_batch_job.py +0 -0
  193. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/mcp_server.py +0 -0
  194. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/message.py +0 -0
  195. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/mixins.py +0 -0
  196. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/organization.py +0 -0
  197. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/passage.py +0 -0
  198. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/provider.py +0 -0
  199. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/provider_trace.py +0 -0
  200. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/sandbox_config.py +0 -0
  201. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/source.py +0 -0
  202. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/sources_agents.py +0 -0
  203. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/sqlalchemy_base.py +0 -0
  204. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/sqlite_functions.py +0 -0
  205. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/step.py +0 -0
  206. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/tool.py +0 -0
  207. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/tools_agents.py +0 -0
  208. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/orm/user.py +0 -0
  209. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/__init__.py +0 -0
  210. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/context.py +0 -0
  211. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/events.py +0 -0
  212. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/metric_registry.py +0 -0
  213. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/metrics.py +0 -0
  214. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/resource.py +0 -0
  215. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/otel/tracing.py +0 -0
  216. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/__init__.py +0 -0
  217. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/anna_pa.txt +0 -0
  218. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/google_search_persona.txt +0 -0
  219. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/memgpt_doc.txt +0 -0
  220. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/memgpt_starter.txt +0 -0
  221. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/o1_persona.txt +0 -0
  222. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/sam.txt +0 -0
  223. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/sam_pov.txt +0 -0
  224. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  225. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
  226. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
  227. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/sqldb/test.db +0 -0
  228. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/personas/examples/voice_memory_persona.txt +0 -0
  229. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/plugins/README.md +0 -0
  230. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/plugins/__init__.py +0 -0
  231. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/plugins/defaults.py +0 -0
  232. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/plugins/plugins.py +0 -0
  233. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/__init__.py +0 -0
  234. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/gpt_system.py +0 -0
  235. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_base.txt +0 -0
  236. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_chat.txt +0 -0
  237. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  238. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  239. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  240. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_doc.txt +0 -0
  241. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  242. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  243. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  244. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  245. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  246. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  247. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  248. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
  249. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/memgpt_v2_chat.txt +0 -0
  250. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/react.txt +0 -0
  251. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/sleeptime.txt +0 -0
  252. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
  253. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/sleeptime_v2.txt +0 -0
  254. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/summary_system_prompt.txt +0 -0
  255. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/voice_chat.txt +0 -0
  256. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/voice_sleeptime.txt +0 -0
  257. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/prompts/system/workflow.txt +0 -0
  258. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/pytest.ini +0 -0
  259. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/agent.py +0 -0
  260. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/block.py +0 -0
  261. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/embedding_config.py +0 -0
  262. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/embedding_config_overrides.py +0 -0
  263. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/enums.py +0 -0
  264. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/environment_variables.py +0 -0
  265. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/group.py +0 -0
  266. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/health.py +0 -0
  267. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/identity.py +0 -0
  268. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/job.py +0 -0
  269. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/letta_request.py +0 -0
  270. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/letta_response.py +0 -0
  271. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/letta_stop_reason.py +0 -0
  272. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/llm_batch_job.py +0 -0
  273. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/llm_config_overrides.py +0 -0
  274. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/mcp.py +0 -0
  275. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/memory.py +0 -0
  276. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/openai/chat_completion_request.py +0 -0
  277. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/openai/chat_completion_response.py +0 -0
  278. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/openai/chat_completions.py +0 -0
  279. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/openai/embedding_response.py +0 -0
  280. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/openai/openai.py +0 -0
  281. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/organization.py +0 -0
  282. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/passage.py +0 -0
  283. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/pip_requirement.py +0 -0
  284. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/provider_trace.py +0 -0
  285. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/response_format.py +0 -0
  286. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/run.py +0 -0
  287. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/sandbox_config.py +0 -0
  288. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/source.py +0 -0
  289. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/step.py +0 -0
  290. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/tool.py +0 -0
  291. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/tool_execution_result.py +0 -0
  292. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/tool_rule.py +0 -0
  293. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/usage.py +0 -0
  294. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/schemas/user.py +0 -0
  295. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/__init__.py +0 -0
  296. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  297. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  298. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_base.py +0 -0
  299. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_block.py +0 -0
  300. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  301. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_message.py +0 -0
  302. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  303. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  304. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  305. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/__init__.py +0 -0
  306. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/constants.py +0 -0
  307. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/db.py +0 -0
  308. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/generate_openapi_schema.sh +0 -0
  309. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/__init__.py +0 -0
  310. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/auth/__init__.py +0 -0
  311. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/auth/index.py +0 -0
  312. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/auth_token.py +0 -0
  313. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/chat_completions_interface.py +0 -0
  314. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/interface.py +0 -0
  315. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/json_parser.py +0 -0
  316. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/__init__.py +0 -0
  317. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  318. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  319. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  320. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  321. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
  322. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/groups.py +0 -0
  323. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/health.py +0 -0
  324. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/identities.py +0 -0
  325. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  326. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/llms.py +0 -0
  327. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/messages.py +0 -0
  328. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  329. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/providers.py +0 -0
  330. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/runs.py +0 -0
  331. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  332. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/steps.py +0 -0
  333. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/tags.py +0 -0
  334. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/telemetry.py +0 -0
  335. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/tools.py +0 -0
  336. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/users.py +0 -0
  337. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/routers/v1/voice.py +0 -0
  338. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/static_files.py +0 -0
  339. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/streaming_response.py +0 -0
  340. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/rest_api/utils.py +0 -0
  341. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/server.py +0 -0
  342. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/startup.sh +0 -0
  343. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/static_files/assets/index-048c9598.js +0 -0
  344. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  345. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/static_files/favicon.ico +0 -0
  346. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/static_files/index.html +0 -0
  347. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  348. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/utils.py +0 -0
  349. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/ws_api/__init__.py +0 -0
  350. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/ws_api/example_client.py +0 -0
  351. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/ws_api/interface.py +0 -0
  352. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/ws_api/protocol.py +0 -0
  353. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/server/ws_api/server.py +0 -0
  354. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/__init__.py +0 -0
  355. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/agent_manager.py +0 -0
  356. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/block_manager.py +0 -0
  357. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/context_window_calculator/__init__.py +0 -0
  358. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/context_window_calculator/context_window_calculator.py +0 -0
  359. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/context_window_calculator/token_counter.py +0 -0
  360. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/__init__.py +0 -0
  361. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/chunker/__init__.py +0 -0
  362. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/chunker/line_chunker.py +0 -0
  363. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/chunker/llama_index_chunker.py +0 -0
  364. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/embedder/__init__.py +0 -0
  365. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/file_types.py +0 -0
  366. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/parser/__init__.py +0 -0
  367. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/parser/base_parser.py +0 -0
  368. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/parser/mistral_parser.py +0 -0
  369. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/file_processor/types.py +0 -0
  370. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/files_agents_manager.py +0 -0
  371. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/group_manager.py +0 -0
  372. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/helpers/agent_manager_helper.py +0 -0
  373. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/helpers/tool_execution_helper.py +0 -0
  374. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/helpers/tool_parser_helper.py +0 -0
  375. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/identity_manager.py +0 -0
  376. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/llm_batch_manager.py +0 -0
  377. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp/__init__.py +0 -0
  378. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp/base_client.py +0 -0
  379. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp/sse_client.py +0 -0
  380. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp/stdio_client.py +0 -0
  381. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp/streamable_http_client.py +0 -0
  382. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp/types.py +0 -0
  383. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/mcp_manager.py +0 -0
  384. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/message_manager.py +0 -0
  385. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/organization_manager.py +0 -0
  386. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/passage_manager.py +0 -0
  387. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/per_agent_lock_manager.py +0 -0
  388. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/provider_manager.py +0 -0
  389. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/sandbox_config_manager.py +0 -0
  390. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/step_manager.py +0 -0
  391. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/summarizer/__init__.py +0 -0
  392. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/telemetry_manager.py +0 -0
  393. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/__init__.py +0 -0
  394. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/builtin_tool_executor.py +0 -0
  395. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/composio_tool_executor.py +0 -0
  396. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/core_tool_executor.py +0 -0
  397. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/mcp_tool_executor.py +0 -0
  398. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/multi_agent_tool_executor.py +0 -0
  399. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/tool_execution_manager.py +0 -0
  400. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
  401. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/tool_executor.py +0 -0
  402. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_executor/tool_executor_base.py +0 -0
  403. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_manager.py +0 -0
  404. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_sandbox/__init__.py +0 -0
  405. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_sandbox/base.py +0 -0
  406. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
  407. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/services/tool_sandbox/local_sandbox.py +0 -0
  408. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/streaming_interface.py +0 -0
  409. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/streaming_utils.py +0 -0
  410. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/templates/__init__.py +0 -0
  411. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/templates/sandbox_code_file.py.j2 +0 -0
  412. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/templates/sandbox_code_file_async.py.j2 +0 -0
  413. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/templates/summary_request_text.j2 +0 -0
  414. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/templates/template_helper.py +0 -0
  415. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/types/__init__.py +0 -0
  416. {letta_nightly-0.8.9.dev20250706104157 → letta_nightly-0.8.10.dev20250707035305}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.8.9.dev20250706104157
3
+ Version: 0.8.10.dev20250707035305
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -75,6 +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
79
  Requires-Dist: pre-commit (>=3.5.0,<4.0.0) ; extra == "dev" or extra == "all"
79
80
  Requires-Dist: prettytable (>=3.9.0,<4.0.0)
80
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.9"
8
+ __version__ = "0.8.10"
9
9
 
10
10
 
11
11
  if os.environ.get("LETTA_VERSION"):
@@ -82,11 +82,16 @@ class LettaAgent(BaseAgent):
82
82
  step_manager: StepManager = NoopStepManager(),
83
83
  telemetry_manager: TelemetryManager = NoopTelemetryManager(),
84
84
  current_run_id: str | None = None,
85
+ ## summarizer settings
86
+ summarizer_mode: SummarizationMode = summarizer_settings.mode,
87
+ # for static_buffer mode
85
88
  summary_block_label: str = DEFAULT_SUMMARY_BLOCK_LABEL,
86
89
  message_buffer_limit: int = summarizer_settings.message_buffer_limit,
87
90
  message_buffer_min: int = summarizer_settings.message_buffer_min,
88
91
  enable_summarization: bool = summarizer_settings.enable_summarization,
89
92
  max_summarization_retries: int = summarizer_settings.max_summarization_retries,
93
+ # for partial_evict mode
94
+ partial_evict_summarizer_percentage: float = summarizer_settings.partial_evict_summarizer_percentage,
90
95
  ):
91
96
  super().__init__(agent_id=agent_id, openai_client=None, message_manager=message_manager, agent_manager=agent_manager, actor=actor)
92
97
 
@@ -124,11 +129,13 @@ class LettaAgent(BaseAgent):
124
129
  )
125
130
 
126
131
  self.summarizer = Summarizer(
127
- mode=SummarizationMode(summarizer_settings.mode),
132
+ mode=summarizer_mode,
133
+ # TODO consolidate to not use this, or push it into the Summarizer() class
128
134
  summarizer_agent=self.summarization_agent,
129
135
  # TODO: Make this configurable
130
136
  message_buffer_limit=message_buffer_limit,
131
137
  message_buffer_min=message_buffer_min,
138
+ partial_evict_summarizer_percentage=partial_evict_summarizer_percentage,
132
139
  )
133
140
 
134
141
  async def _check_run_cancellation(self) -> bool:
@@ -872,25 +879,35 @@ class LettaAgent(BaseAgent):
872
879
  self.logger.warning(
873
880
  f"Total tokens {total_tokens} exceeds configured max tokens {llm_config.context_window}, forcefully clearing message history."
874
881
  )
875
- new_in_context_messages, updated = self.summarizer.summarize(
876
- in_context_messages=in_context_messages, new_letta_messages=new_letta_messages, force=True, clear=True
882
+ new_in_context_messages, updated = await self.summarizer.summarize(
883
+ in_context_messages=in_context_messages,
884
+ new_letta_messages=new_letta_messages,
885
+ force=True,
886
+ clear=True,
877
887
  )
878
888
  else:
879
- new_in_context_messages, updated = self.summarizer.summarize(
880
- in_context_messages=in_context_messages, new_letta_messages=new_letta_messages
889
+ self.logger.info(
890
+ f"Total tokens {total_tokens} does not exceed configured max tokens {llm_config.context_window}, passing summarizing w/o force."
891
+ )
892
+ new_in_context_messages, updated = await self.summarizer.summarize(
893
+ in_context_messages=in_context_messages,
894
+ new_letta_messages=new_letta_messages,
881
895
  )
882
896
  await self.agent_manager.set_in_context_messages_async(
883
- agent_id=self.agent_id, message_ids=[m.id for m in new_in_context_messages], actor=self.actor
897
+ agent_id=self.agent_id,
898
+ message_ids=[m.id for m in new_in_context_messages],
899
+ actor=self.actor,
884
900
  )
885
901
 
886
902
  return new_in_context_messages
887
903
 
888
904
  @trace_method
889
905
  async def summarize_conversation_history(self) -> AgentState:
906
+ """Called when the developer explicitly triggers compaction via the API"""
890
907
  agent_state = await self.agent_manager.get_agent_by_id_async(agent_id=self.agent_id, actor=self.actor)
891
908
  message_ids = agent_state.message_ids
892
909
  in_context_messages = await self.message_manager.get_messages_by_ids_async(message_ids=message_ids, actor=self.actor)
893
- new_in_context_messages, updated = self.summarizer.summarize(
910
+ new_in_context_messages, updated = await self.summarizer.summarize(
894
911
  in_context_messages=in_context_messages, new_letta_messages=[], force=True
895
912
  )
896
913
  return await self.agent_manager.set_in_context_messages_async(
@@ -295,7 +295,7 @@ class VoiceAgent(BaseAgent):
295
295
  new_letta_messages = await self.message_manager.create_many_messages_async(letta_message_db_queue, actor=self.actor)
296
296
 
297
297
  # TODO: Make this more general and configurable, less brittle
298
- new_in_context_messages, updated = summarizer.summarize(
298
+ new_in_context_messages, updated = await summarizer.summarize(
299
299
  in_context_messages=in_context_messages, new_letta_messages=new_letta_messages
300
300
  )
301
301
 
@@ -90,7 +90,7 @@ class VoiceSleeptimeAgent(LettaAgent):
90
90
  current_in_context_messages, new_in_context_messages, stop_reason, usage = await super()._step(
91
91
  agent_state=agent_state, input_messages=input_messages, max_steps=max_steps
92
92
  )
93
- new_in_context_messages, updated = self.summarizer.summarize(
93
+ new_in_context_messages, updated = await self.summarizer.summarize(
94
94
  in_context_messages=current_in_context_messages, new_letta_messages=new_in_context_messages
95
95
  )
96
96
  self.agent_manager.set_in_context_messages(
@@ -364,3 +364,10 @@ REDIS_RUN_ID_PREFIX = "agent:send_message:run_id"
364
364
  MAX_FILES_OPEN = 5
365
365
 
366
366
  GET_PROVIDERS_TIMEOUT_SECONDS = 10
367
+
368
+ # Pinecone related fields
369
+ PINECONE_EMBEDDING_MODEL: str = "llama-text-embed-v2"
370
+ PINECONE_TEXT_FIELD_NAME = "chunk_text"
371
+ PINECONE_METRIC = "cosine"
372
+ PINECONE_CLOUD = "aws"
373
+ PINECONE_REGION = "us-east-1"
@@ -65,7 +65,7 @@ async def grep_files(
65
65
  raise NotImplementedError("Tool not implemented. Please contact the Letta team.")
66
66
 
67
67
 
68
- async def semantic_search_files(agent_state: "AgentState", query: str) -> List["FileMetadata"]:
68
+ async def semantic_search_files(agent_state: "AgentState", query: str, limit: int = 5) -> List["FileMetadata"]:
69
69
  """
70
70
  Get list of most relevant chunks from any file using vector/embedding search.
71
71
 
@@ -76,6 +76,7 @@ async def semantic_search_files(agent_state: "AgentState", query: str) -> List["
76
76
 
77
77
  Args:
78
78
  query (str): The search query.
79
+ limit: Maximum number of results to return (default: 5)
79
80
 
80
81
  Returns:
81
82
  List[FileMetadata]: List of matching files.
@@ -29,7 +29,6 @@ def derive_openai_json_schema(source_code: str, name: Optional[str] = None) -> d
29
29
  # "Field": Field,
30
30
  }
31
31
  env.update(globals())
32
-
33
32
  # print("About to execute source code...")
34
33
  exec(source_code, env)
35
34
  # print("Source code executed successfully")
@@ -0,0 +1,143 @@
1
+ from typing import Any, Dict, List
2
+
3
+ from pinecone import PineconeAsyncio
4
+
5
+ from letta.constants import PINECONE_CLOUD, PINECONE_EMBEDDING_MODEL, PINECONE_METRIC, PINECONE_REGION, PINECONE_TEXT_FIELD_NAME
6
+ from letta.log import get_logger
7
+ from letta.schemas.user import User
8
+ from letta.settings import settings
9
+
10
+ logger = get_logger(__name__)
11
+
12
+
13
+ def should_use_pinecone(verbose: bool = False):
14
+ if verbose:
15
+ logger.info(
16
+ "Pinecone check: enable_pinecone=%s, api_key=%s, agent_index=%s, source_index=%s",
17
+ settings.enable_pinecone,
18
+ bool(settings.pinecone_api_key),
19
+ bool(settings.pinecone_agent_index),
20
+ bool(settings.pinecone_source_index),
21
+ )
22
+
23
+ return settings.enable_pinecone and settings.pinecone_api_key and settings.pinecone_agent_index and settings.pinecone_source_index
24
+
25
+
26
+ async def upsert_pinecone_indices():
27
+ from pinecone import IndexEmbed, PineconeAsyncio
28
+
29
+ for index_name in get_pinecone_indices():
30
+ async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
31
+ if not await pc.has_index(index_name):
32
+ await pc.create_index_for_model(
33
+ name=index_name,
34
+ cloud=PINECONE_CLOUD,
35
+ region=PINECONE_REGION,
36
+ embed=IndexEmbed(model=PINECONE_EMBEDDING_MODEL, field_map={"text": PINECONE_TEXT_FIELD_NAME}, metric=PINECONE_METRIC),
37
+ )
38
+
39
+
40
+ def get_pinecone_indices() -> List[str]:
41
+ return [settings.pinecone_agent_index, settings.pinecone_source_index]
42
+
43
+
44
+ async def upsert_file_records_to_pinecone_index(file_id: str, source_id: str, chunks: List[str], actor: User):
45
+ records = []
46
+ for i, chunk in enumerate(chunks):
47
+ record = {
48
+ "_id": f"{file_id}_{i}",
49
+ PINECONE_TEXT_FIELD_NAME: chunk,
50
+ "file_id": file_id,
51
+ "source_id": source_id,
52
+ }
53
+ records.append(record)
54
+
55
+ return await upsert_records_to_pinecone_index(records, actor)
56
+
57
+
58
+ async def delete_file_records_from_pinecone_index(file_id: str, actor: User):
59
+ from pinecone.exceptions.exceptions import NotFoundException
60
+
61
+ namespace = actor.organization_id
62
+ try:
63
+ async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
64
+ description = await pc.describe_index(name=settings.pinecone_source_index)
65
+ async with pc.IndexAsyncio(host=description.index.host) as dense_index:
66
+ await dense_index.delete(
67
+ filter={
68
+ "file_id": {"$eq": file_id},
69
+ },
70
+ namespace=namespace,
71
+ )
72
+ except NotFoundException:
73
+ logger.warning(f"Pinecone namespace {namespace} not found for {file_id} and {actor.organization_id}")
74
+
75
+
76
+ async def delete_source_records_from_pinecone_index(source_id: str, actor: User):
77
+ from pinecone.exceptions.exceptions import NotFoundException
78
+
79
+ namespace = actor.organization_id
80
+ try:
81
+ async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
82
+ description = await pc.describe_index(name=settings.pinecone_source_index)
83
+ async with pc.IndexAsyncio(host=description.index.host) as dense_index:
84
+ await dense_index.delete(filter={"source_id": {"$eq": source_id}}, namespace=namespace)
85
+ except NotFoundException:
86
+ logger.warning(f"Pinecone namespace {namespace} not found for {source_id} and {actor.organization_id}")
87
+
88
+
89
+ async def upsert_records_to_pinecone_index(records: List[dict], actor: User):
90
+ async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
91
+ description = await pc.describe_index(name=settings.pinecone_source_index)
92
+ async with pc.IndexAsyncio(host=description.index.host) as dense_index:
93
+ await dense_index.upsert_records(actor.organization_id, records)
94
+
95
+
96
+ async def search_pinecone_index(query: str, limit: int, filter: Dict[str, Any], actor: User) -> Dict[str, Any]:
97
+ async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
98
+ description = await pc.describe_index(name=settings.pinecone_source_index)
99
+ async with pc.IndexAsyncio(host=description.index.host) as dense_index:
100
+ namespace = actor.organization_id
101
+
102
+ try:
103
+ # Search the dense index with reranking
104
+ search_results = await dense_index.search(
105
+ namespace=namespace,
106
+ query={
107
+ "top_k": limit,
108
+ "inputs": {"text": query},
109
+ "filter": filter,
110
+ },
111
+ rerank={"model": "bge-reranker-v2-m3", "top_n": limit, "rank_fields": [PINECONE_TEXT_FIELD_NAME]},
112
+ )
113
+ return search_results
114
+ except Exception as e:
115
+ logger.warning(f"Failed to search Pinecone namespace {actor.organization_id}: {str(e)}")
116
+ raise e
117
+
118
+
119
+ async def list_pinecone_index_for_files(file_id: str, actor: User, limit: int = None, pagination_token: str = None) -> List[str]:
120
+ from pinecone.exceptions.exceptions import NotFoundException
121
+
122
+ namespace = actor.organization_id
123
+ try:
124
+ async with PineconeAsyncio(api_key=settings.pinecone_api_key) as pc:
125
+ description = await pc.describe_index(name=settings.pinecone_source_index)
126
+ async with pc.IndexAsyncio(host=description.index.host) as dense_index:
127
+
128
+ kwargs = {"namespace": namespace, "prefix": file_id}
129
+ if limit is not None:
130
+ kwargs["limit"] = limit
131
+ if pagination_token is not None:
132
+ kwargs["pagination_token"] = pagination_token
133
+
134
+ try:
135
+ result = []
136
+ async for ids in dense_index.list(**kwargs):
137
+ result.extend(ids)
138
+ return result
139
+ except Exception as e:
140
+ logger.warning(f"Failed to list Pinecone namespace {actor.organization_id}: {str(e)}")
141
+ raise e
142
+ except NotFoundException:
143
+ logger.warning(f"Pinecone namespace {namespace} not found for {file_id} and {actor.organization_id}")
@@ -216,6 +216,10 @@ class OpenAIClient(LLMClientBase):
216
216
  # NOTE: the reasoners that don't support temperature require 1.0, not None
217
217
  temperature=llm_config.temperature if supports_temperature_param(model) else 1.0,
218
218
  )
219
+
220
+ if llm_config.frequency_penalty is not None:
221
+ data.frequency_penalty = llm_config.frequency_penalty
222
+
219
223
  if tools and supports_parallel_tool_calling(model):
220
224
  data.parallel_tool_calls = False
221
225
 
@@ -60,6 +60,8 @@ class FileMetadata(SqlalchemyBase, OrganizationMixin, SourceMixin, AsyncAttrs):
60
60
  )
61
61
 
62
62
  error_message: Mapped[Optional[str]] = mapped_column(Text, nullable=True, doc="Any error message encountered during processing.")
63
+ total_chunks: Mapped[Optional[int]] = mapped_column(Integer, nullable=True, doc="Total number of chunks for the file.")
64
+ chunks_embedded: Mapped[Optional[int]] = mapped_column(Integer, nullable=True, doc="Number of chunks that have been embedded.")
63
65
 
64
66
  # relationships
65
67
  organization: Mapped["Organization"] = relationship("Organization", back_populates="files", lazy="selectin")
@@ -112,6 +114,8 @@ class FileMetadata(SqlalchemyBase, OrganizationMixin, SourceMixin, AsyncAttrs):
112
114
  file_last_modified_date=self.file_last_modified_date,
113
115
  processing_status=self.processing_status,
114
116
  error_message=self.error_message,
117
+ total_chunks=self.total_chunks,
118
+ chunks_embedded=self.chunks_embedded,
115
119
  created_at=self.created_at,
116
120
  updated_at=self.updated_at,
117
121
  is_deleted=self.is_deleted,
@@ -1,14 +1,12 @@
1
1
  WORD_LIMIT = 100
2
- SYSTEM = f"""
3
- Your job is to summarize a history of previous messages in a conversation between an AI persona and a human.
2
+ SYSTEM = f"""Your job is to summarize a history of previous messages in a conversation between an AI persona and a human.
4
3
  The conversation you are given is a from a fixed context window and may not be complete.
5
4
  Messages sent by the AI are marked with the 'assistant' role.
6
- The AI 'assistant' can also make calls to functions, whose outputs can be seen in messages with the 'function' role.
5
+ The AI 'assistant' can also make calls to tools, whose outputs can be seen in messages with the 'tool' role.
7
6
  Things the AI says in the message content are considered inner monologue and are not seen by the user.
8
7
  The only AI messages seen by the user are from when the AI uses 'send_message'.
9
8
  Messages the user sends are in the 'user' role.
10
9
  The 'user' role is also used for important system events, such as login events and heartbeat events (heartbeats run the AI's program without user action, allowing the AI to act without prompting from the user sending them a message).
11
- Summarize what happened in the conversation from the perspective of the AI (use the first person).
10
+ Summarize what happened in the conversation from the perspective of the AI (use the first person from the perspective of the AI).
12
11
  Keep your summary less than {WORD_LIMIT} words, do NOT exceed this word limit.
13
- Only output the summary, do NOT include anything else in your output.
14
- """
12
+ Only output the summary, do NOT include anything else in your output."""
@@ -41,6 +41,8 @@ class FileMetadata(FileMetadataBase):
41
41
  description="The current processing status of the file (e.g. pending, parsing, embedding, completed, error).",
42
42
  )
43
43
  error_message: Optional[str] = Field(default=None, description="Optional error message if the file failed processing.")
44
+ total_chunks: Optional[int] = Field(default=None, description="Total number of chunks for the file.")
45
+ chunks_embedded: Optional[int] = Field(default=None, description="Number of chunks that have been embedded.")
44
46
 
45
47
  # orm metadata, optional fields
46
48
  created_at: Optional[datetime] = Field(default_factory=datetime.utcnow, description="The creation date of the file.")
@@ -52,6 +54,10 @@ class FileMetadata(FileMetadataBase):
52
54
  default=None, description="Optional full-text content of the file; only populated on demand due to its size."
53
55
  )
54
56
 
57
+ def is_processing_terminal(self) -> bool:
58
+ """Check if the file processing status is in a terminal state (completed or error)."""
59
+ return self.processing_status in (FileProcessingStatus.COMPLETED, FileProcessingStatus.ERROR)
60
+
55
61
 
56
62
  class FileAgentBase(LettaBase):
57
63
  """Base class for the FileMetadata-⇄-Agent association schemas"""
@@ -97,7 +97,7 @@ class LettaBase(BaseModel):
97
97
 
98
98
  class OrmMetadataBase(LettaBase):
99
99
  # metadata fields
100
- created_by_id: Optional[str] = Field(None, description="The id of the user that made this object.")
101
- last_updated_by_id: Optional[str] = Field(None, description="The id of the user that made this object.")
102
- created_at: Optional[datetime] = Field(None, description="The timestamp when the object was created.")
103
- updated_at: Optional[datetime] = Field(None, description="The timestamp when the object was last updated.")
100
+ created_by_id: Optional[str] = Field(default=None, description="The id of the user that made this object.")
101
+ last_updated_by_id: Optional[str] = Field(default=None, description="The id of the user that made this object.")
102
+ created_at: Optional[datetime] = Field(default=None, description="The timestamp when the object was created.")
103
+ updated_at: Optional[datetime] = Field(default=None, description="The timestamp when the object was last updated.")
@@ -72,7 +72,7 @@ class SystemMessage(LettaMessage):
72
72
  content (str): The message content sent by the system
73
73
  """
74
74
 
75
- message_type: Literal[MessageType.system_message] = Field(MessageType.system_message, description="The type of the message.")
75
+ message_type: Literal[MessageType.system_message] = Field(default=MessageType.system_message, description="The type of the message.")
76
76
  content: str = Field(..., description="The message content sent by the system")
77
77
 
78
78
 
@@ -87,7 +87,7 @@ class UserMessage(LettaMessage):
87
87
  content (Union[str, List[LettaUserMessageContentUnion]]): The message content sent by the user (can be a string or an array of multi-modal content parts)
88
88
  """
89
89
 
90
- message_type: Literal[MessageType.user_message] = Field(MessageType.user_message, description="The type of the message.")
90
+ message_type: Literal[MessageType.user_message] = Field(default=MessageType.user_message, description="The type of the message.")
91
91
  content: Union[str, List[LettaUserMessageContentUnion]] = Field(
92
92
  ...,
93
93
  description="The message content sent by the user (can be a string or an array of multi-modal content parts)",
@@ -109,7 +109,9 @@ class ReasoningMessage(LettaMessage):
109
109
  signature (Optional[str]): The model-generated signature of the reasoning step
110
110
  """
111
111
 
112
- message_type: Literal[MessageType.reasoning_message] = Field(MessageType.reasoning_message, description="The type of the message.")
112
+ message_type: Literal[MessageType.reasoning_message] = Field(
113
+ default=MessageType.reasoning_message, description="The type of the message."
114
+ )
113
115
  source: Literal["reasoner_model", "non_reasoner_model"] = "non_reasoner_model"
114
116
  reasoning: str
115
117
  signature: Optional[str] = None
@@ -130,7 +132,7 @@ class HiddenReasoningMessage(LettaMessage):
130
132
  """
131
133
 
132
134
  message_type: Literal[MessageType.hidden_reasoning_message] = Field(
133
- MessageType.hidden_reasoning_message, description="The type of the message."
135
+ default=MessageType.hidden_reasoning_message, description="The type of the message."
134
136
  )
135
137
  state: Literal["redacted", "omitted"]
136
138
  hidden_reasoning: Optional[str] = None
@@ -170,7 +172,9 @@ class ToolCallMessage(LettaMessage):
170
172
  tool_call (Union[ToolCall, ToolCallDelta]): The tool call
171
173
  """
172
174
 
173
- message_type: Literal[MessageType.tool_call_message] = Field(MessageType.tool_call_message, description="The type of the message.")
175
+ message_type: Literal[MessageType.tool_call_message] = Field(
176
+ default=MessageType.tool_call_message, description="The type of the message."
177
+ )
174
178
  tool_call: Union[ToolCall, ToolCallDelta]
175
179
 
176
180
  def model_dump(self, *args, **kwargs):
@@ -222,7 +226,9 @@ class ToolReturnMessage(LettaMessage):
222
226
  stderr (Optional[List(str)]): Captured stderr from the tool invocation
223
227
  """
224
228
 
225
- message_type: Literal[MessageType.tool_return_message] = Field(MessageType.tool_return_message, description="The type of the message.")
229
+ message_type: Literal[MessageType.tool_return_message] = Field(
230
+ default=MessageType.tool_return_message, description="The type of the message."
231
+ )
226
232
  tool_return: str
227
233
  status: Literal["success", "error"]
228
234
  tool_call_id: str
@@ -241,7 +247,9 @@ class AssistantMessage(LettaMessage):
241
247
  content (Union[str, List[LettaAssistantMessageContentUnion]]): The message content sent by the agent (can be a string or an array of content parts)
242
248
  """
243
249
 
244
- message_type: Literal[MessageType.assistant_message] = Field(MessageType.assistant_message, description="The type of the message.")
250
+ message_type: Literal[MessageType.assistant_message] = Field(
251
+ default=MessageType.assistant_message, description="The type of the message."
252
+ )
245
253
  content: Union[str, List[LettaAssistantMessageContentUnion]] = Field(
246
254
  ...,
247
255
  description="The message content sent by the agent (can be a string or an array of content parts)",
@@ -24,7 +24,7 @@ class MessageContent(BaseModel):
24
24
 
25
25
 
26
26
  class TextContent(MessageContent):
27
- type: Literal[MessageContentType.text] = Field(MessageContentType.text, description="The type of the message.")
27
+ type: Literal[MessageContentType.text] = Field(default=MessageContentType.text, description="The type of the message.")
28
28
  text: str = Field(..., description="The text content of the message.")
29
29
 
30
30
 
@@ -44,27 +44,27 @@ class ImageSource(BaseModel):
44
44
 
45
45
 
46
46
  class UrlImage(ImageSource):
47
- type: Literal[ImageSourceType.url] = Field(ImageSourceType.url, description="The source type for the image.")
47
+ type: Literal[ImageSourceType.url] = Field(default=ImageSourceType.url, description="The source type for the image.")
48
48
  url: str = Field(..., description="The URL of the image.")
49
49
 
50
50
 
51
51
  class Base64Image(ImageSource):
52
- type: Literal[ImageSourceType.base64] = Field(ImageSourceType.base64, description="The source type for the image.")
52
+ type: Literal[ImageSourceType.base64] = Field(default=ImageSourceType.base64, description="The source type for the image.")
53
53
  media_type: str = Field(..., description="The media type for the image.")
54
54
  data: str = Field(..., description="The base64 encoded image data.")
55
55
  detail: Optional[str] = Field(
56
- None,
56
+ default=None,
57
57
  description="What level of detail to use when processing and understanding the image (low, high, or auto to let the model decide)",
58
58
  )
59
59
 
60
60
 
61
61
  class LettaImage(ImageSource):
62
- type: Literal[ImageSourceType.letta] = Field(ImageSourceType.letta, description="The source type for the image.")
62
+ type: Literal[ImageSourceType.letta] = Field(default=ImageSourceType.letta, description="The source type for the image.")
63
63
  file_id: str = Field(..., description="The unique identifier of the image file persisted in storage.")
64
- media_type: Optional[str] = Field(None, description="The media type for the image.")
65
- data: Optional[str] = Field(None, description="The base64 encoded image data.")
64
+ media_type: Optional[str] = Field(default=None, description="The media type for the image.")
65
+ data: Optional[str] = Field(default=None, description="The base64 encoded image data.")
66
66
  detail: Optional[str] = Field(
67
- None,
67
+ default=None,
68
68
  description="What level of detail to use when processing and understanding the image (low, high, or auto to let the model decide)",
69
69
  )
70
70
 
@@ -73,7 +73,7 @@ ImageSourceUnion = Annotated[Union[UrlImage, Base64Image, LettaImage], Field(dis
73
73
 
74
74
 
75
75
  class ImageContent(MessageContent):
76
- type: Literal[MessageContentType.image] = Field(MessageContentType.image, description="The type of the message.")
76
+ type: Literal[MessageContentType.image] = Field(default=MessageContentType.image, description="The type of the message.")
77
77
  source: ImageSourceUnion = Field(..., description="The source of the image.")
78
78
 
79
79
 
@@ -164,7 +164,7 @@ def get_letta_assistant_message_content_union_str_json_schema():
164
164
 
165
165
  class ToolCallContent(MessageContent):
166
166
  type: Literal[MessageContentType.tool_call] = Field(
167
- MessageContentType.tool_call, description="Indicates this content represents a tool call event."
167
+ default=MessageContentType.tool_call, description="Indicates this content represents a tool call event."
168
168
  )
169
169
  id: str = Field(..., description="A unique identifier for this specific tool call instance.")
170
170
  name: str = Field(..., description="The name of the tool being called.")
@@ -175,7 +175,7 @@ class ToolCallContent(MessageContent):
175
175
 
176
176
  class ToolReturnContent(MessageContent):
177
177
  type: Literal[MessageContentType.tool_return] = Field(
178
- MessageContentType.tool_return, description="Indicates this content represents a tool return event."
178
+ default=MessageContentType.tool_return, description="Indicates this content represents a tool return event."
179
179
  )
180
180
  tool_call_id: str = Field(..., description="References the ID of the ToolCallContent that initiated this tool call.")
181
181
  content: str = Field(..., description="The content returned by the tool execution.")
@@ -184,23 +184,23 @@ class ToolReturnContent(MessageContent):
184
184
 
185
185
  class ReasoningContent(MessageContent):
186
186
  type: Literal[MessageContentType.reasoning] = Field(
187
- MessageContentType.reasoning, description="Indicates this is a reasoning/intermediate step."
187
+ default=MessageContentType.reasoning, description="Indicates this is a reasoning/intermediate step."
188
188
  )
189
189
  is_native: bool = Field(..., description="Whether the reasoning content was generated by a reasoner model that processed this step.")
190
190
  reasoning: str = Field(..., description="The intermediate reasoning or thought process content.")
191
- signature: Optional[str] = Field(None, description="A unique identifier for this reasoning step.")
191
+ signature: Optional[str] = Field(default=None, description="A unique identifier for this reasoning step.")
192
192
 
193
193
 
194
194
  class RedactedReasoningContent(MessageContent):
195
195
  type: Literal[MessageContentType.redacted_reasoning] = Field(
196
- MessageContentType.redacted_reasoning, description="Indicates this is a redacted thinking step."
196
+ default=MessageContentType.redacted_reasoning, description="Indicates this is a redacted thinking step."
197
197
  )
198
198
  data: str = Field(..., description="The redacted or filtered intermediate reasoning content.")
199
199
 
200
200
 
201
201
  class OmittedReasoningContent(MessageContent):
202
202
  type: Literal[MessageContentType.omitted_reasoning] = Field(
203
- MessageContentType.omitted_reasoning, description="Indicates this is an omitted reasoning step."
203
+ default=MessageContentType.omitted_reasoning, description="Indicates this is an omitted reasoning step."
204
204
  )
205
205
  # NOTE: dropping because we don't track this kind of information for the other reasoning types
206
206
  # tokens: int = Field(..., description="The reasoning token count for intermediate reasoning content.")
@@ -78,6 +78,10 @@ class LLMConfig(BaseModel):
78
78
  0,
79
79
  description="Configurable thinking budget for extended thinking. Used for enable_reasoner and also for Google Vertex models like Gemini 2.5 Flash. Minimum value is 1024 when used with enable_reasoner.",
80
80
  )
81
+ frequency_penalty: Optional[float] = Field(
82
+ None, # Can also deafult to 0.0?
83
+ description="Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. From OpenAI: Number between -2.0 and 2.0.",
84
+ )
81
85
 
82
86
  # FIXME hack to silence pydantic protected namespace warning
83
87
  model_config = ConfigDict(protected_namespaces=())