letta-nightly 0.7.5.dev20250428110034__tar.gz → 0.7.6.dev20250429104313__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 (342) hide show
  1. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/PKG-INFO +1 -1
  2. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/__init__.py +1 -1
  3. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/base_agent.py +1 -1
  4. letta_nightly-0.7.6.dev20250429104313/letta/agents/ephemeral_memory_agent.py +422 -0
  5. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/voice_agent.py +196 -62
  6. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/constants.py +2 -0
  7. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/datetime_helpers.py +7 -0
  8. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/interfaces/openai_chat_completions_streaming_interface.py +16 -12
  9. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/google_ai_client.py +4 -0
  10. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/llm_api_tools.py +5 -2
  11. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/openai.py +2 -1
  12. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/openai_client.py +3 -2
  13. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/llm_config.py +5 -1
  14. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/openai/chat_completion_request.py +1 -0
  15. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/providers.py +4 -3
  16. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/sandbox_config.py +4 -4
  17. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +4 -10
  18. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/voice.py +8 -18
  19. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/utils.py +26 -20
  20. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/server.py +67 -26
  21. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/helpers/agent_manager_helper.py +2 -2
  22. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/helpers/tool_execution_helper.py +30 -3
  23. letta_nightly-0.7.6.dev20250429104313/letta/services/summarizer/summarizer.py +176 -0
  24. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_executor/tool_execution_sandbox.py +13 -9
  25. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_sandbox/local_sandbox.py +4 -4
  26. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/user_manager.py +5 -2
  27. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/settings.py +4 -2
  28. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/system.py +0 -1
  29. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/tracing.py +1 -0
  30. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/pyproject.toml +1 -1
  31. letta_nightly-0.7.5.dev20250428110034/letta/agents/ephemeral_memory_agent.py +0 -112
  32. letta_nightly-0.7.5.dev20250428110034/letta/services/summarizer/summarizer.py +0 -109
  33. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/LICENSE +0 -0
  34. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/README.md +0 -0
  35. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/__main__.py +0 -0
  36. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agent.py +0 -0
  37. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/__init__.py +0 -0
  38. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/ephemeral_agent.py +0 -0
  39. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/helpers.py +0 -0
  40. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/letta_agent.py +0 -0
  41. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/agents/letta_agent_batch.py +0 -0
  42. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/benchmark/benchmark.py +0 -0
  43. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/benchmark/constants.py +0 -0
  44. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/cli/cli.py +0 -0
  45. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/cli/cli_config.py +0 -0
  46. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/cli/cli_load.py +0 -0
  47. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/client/__init__.py +0 -0
  48. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/client/client.py +0 -0
  49. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/client/streaming.py +0 -0
  50. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/client/utils.py +0 -0
  51. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/config.py +0 -0
  52. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/data_sources/connectors.py +0 -0
  53. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/data_sources/connectors_helper.py +0 -0
  54. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/embeddings.py +0 -0
  55. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/errors.py +0 -0
  56. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/__init__.py +0 -0
  57. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/ast_parsers.py +0 -0
  58. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/function_sets/base.py +0 -0
  59. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/function_sets/extras.py +0 -0
  60. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/function_sets/multi_agent.py +0 -0
  61. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/functions.py +0 -0
  62. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/helpers.py +0 -0
  63. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/interface.py +0 -0
  64. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/mcp_client/__init__.py +0 -0
  65. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/mcp_client/base_client.py +0 -0
  66. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/mcp_client/exceptions.py +0 -0
  67. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/mcp_client/sse_client.py +0 -0
  68. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/mcp_client/stdio_client.py +0 -0
  69. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/mcp_client/types.py +0 -0
  70. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/functions/schema_generator.py +0 -0
  71. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/groups/dynamic_multi_agent.py +0 -0
  72. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/groups/helpers.py +0 -0
  73. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/groups/round_robin_multi_agent.py +0 -0
  74. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/groups/sleeptime_multi_agent.py +0 -0
  75. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/groups/sleeptime_multi_agent_v2.py +0 -0
  76. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/groups/supervisor_multi_agent.py +0 -0
  77. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/__init__.py +0 -0
  78. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/composio_helpers.py +0 -0
  79. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/converters.py +0 -0
  80. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/json_helpers.py +0 -0
  81. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/message_helper.py +0 -0
  82. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/tool_execution_helper.py +0 -0
  83. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/helpers/tool_rule_solver.py +0 -0
  84. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/humans/__init__.py +0 -0
  85. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/humans/examples/basic.txt +0 -0
  86. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/humans/examples/cs_phd.txt +0 -0
  87. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/interface.py +0 -0
  88. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/interfaces/__init__.py +0 -0
  89. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/interfaces/anthropic_streaming_interface.py +0 -0
  90. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/interfaces/utils.py +0 -0
  91. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/jobs/__init__.py +0 -0
  92. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/jobs/helpers.py +0 -0
  93. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/jobs/llm_batch_job_polling.py +0 -0
  94. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/jobs/scheduler.py +0 -0
  95. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/jobs/types.py +0 -0
  96. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/__init__.py +0 -0
  97. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/anthropic.py +0 -0
  98. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/anthropic_client.py +0 -0
  99. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/aws_bedrock.py +0 -0
  100. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/azure_openai.py +0 -0
  101. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/azure_openai_constants.py +0 -0
  102. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/cohere.py +0 -0
  103. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/deepseek.py +0 -0
  104. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/google_constants.py +0 -0
  105. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/google_vertex_client.py +0 -0
  106. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/helpers.py +0 -0
  107. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/llm_client.py +0 -0
  108. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/llm_client_base.py +0 -0
  109. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/llm_api/mistral.py +0 -0
  110. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/README.md +0 -0
  111. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/__init__.py +0 -0
  112. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/chat_completion_proxy.py +0 -0
  113. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/constants.py +0 -0
  114. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/function_parser.py +0 -0
  115. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/grammars/__init__.py +0 -0
  116. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  117. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/grammars/json.gbnf +0 -0
  118. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  119. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/json_parser.py +0 -0
  120. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/koboldcpp/api.py +0 -0
  121. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/koboldcpp/settings.py +0 -0
  122. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llamacpp/api.py +0 -0
  123. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llamacpp/settings.py +0 -0
  124. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  125. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  126. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  127. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  128. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  129. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  130. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  131. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  132. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  133. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/lmstudio/api.py +0 -0
  134. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/lmstudio/settings.py +0 -0
  135. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/ollama/api.py +0 -0
  136. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/ollama/settings.py +0 -0
  137. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/settings/__init__.py +0 -0
  138. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  139. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/settings/settings.py +0 -0
  140. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/settings/simple.py +0 -0
  141. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/utils.py +0 -0
  142. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/vllm/api.py +0 -0
  143. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/webui/api.py +0 -0
  144. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/webui/legacy_api.py +0 -0
  145. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/webui/legacy_settings.py +0 -0
  146. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/local_llm/webui/settings.py +0 -0
  147. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/log.py +0 -0
  148. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/main.py +0 -0
  149. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/memory.py +0 -0
  150. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/openai_backcompat/__init__.py +0 -0
  151. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/openai_backcompat/openai_object.py +0 -0
  152. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/__all__.py +0 -0
  153. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/__init__.py +0 -0
  154. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/agent.py +0 -0
  155. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/agents_tags.py +0 -0
  156. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/base.py +0 -0
  157. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/block.py +0 -0
  158. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/block_history.py +0 -0
  159. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/blocks_agents.py +0 -0
  160. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/custom_columns.py +0 -0
  161. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/enums.py +0 -0
  162. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/errors.py +0 -0
  163. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/file.py +0 -0
  164. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/group.py +0 -0
  165. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/groups_agents.py +0 -0
  166. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/groups_blocks.py +0 -0
  167. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/identities_agents.py +0 -0
  168. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/identities_blocks.py +0 -0
  169. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/identity.py +0 -0
  170. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/job.py +0 -0
  171. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/job_messages.py +0 -0
  172. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/llm_batch_items.py +0 -0
  173. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/llm_batch_job.py +0 -0
  174. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/message.py +0 -0
  175. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/mixins.py +0 -0
  176. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/organization.py +0 -0
  177. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/passage.py +0 -0
  178. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/provider.py +0 -0
  179. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/sandbox_config.py +0 -0
  180. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/source.py +0 -0
  181. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/sources_agents.py +0 -0
  182. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/sqlalchemy_base.py +0 -0
  183. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/sqlite_functions.py +0 -0
  184. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/step.py +0 -0
  185. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/tool.py +0 -0
  186. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/tools_agents.py +0 -0
  187. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/orm/user.py +0 -0
  188. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/__init__.py +0 -0
  189. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/anna_pa.txt +0 -0
  190. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/google_search_persona.txt +0 -0
  191. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/memgpt_doc.txt +0 -0
  192. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/memgpt_starter.txt +0 -0
  193. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/o1_persona.txt +0 -0
  194. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/sam.txt +0 -0
  195. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/sam_pov.txt +0 -0
  196. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  197. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
  198. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/sleeptime_memory_persona.txt +0 -0
  199. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/personas/examples/sqldb/test.db +0 -0
  200. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/__init__.py +0 -0
  201. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/gpt_summarize.py +0 -0
  202. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/gpt_system.py +0 -0
  203. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_base.txt +0 -0
  204. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_chat.txt +0 -0
  205. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  206. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  207. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  208. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_doc.txt +0 -0
  209. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  210. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  211. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_memory_only.txt +0 -0
  212. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  213. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  214. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  215. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  216. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
  217. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/sleeptime.txt +0 -0
  218. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
  219. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/pytest.ini +0 -0
  220. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/agent.py +0 -0
  221. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/block.py +0 -0
  222. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/embedding_config.py +0 -0
  223. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/embedding_config_overrides.py +0 -0
  224. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/enums.py +0 -0
  225. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/environment_variables.py +0 -0
  226. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/file.py +0 -0
  227. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/group.py +0 -0
  228. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/health.py +0 -0
  229. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/identity.py +0 -0
  230. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/job.py +0 -0
  231. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/letta_base.py +0 -0
  232. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/letta_message.py +0 -0
  233. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/letta_message_content.py +0 -0
  234. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/letta_request.py +0 -0
  235. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/letta_response.py +0 -0
  236. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/llm_batch_job.py +0 -0
  237. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/llm_config_overrides.py +0 -0
  238. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/memory.py +0 -0
  239. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/message.py +0 -0
  240. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/openai/chat_completion_response.py +0 -0
  241. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/openai/chat_completions.py +0 -0
  242. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/openai/embedding_response.py +0 -0
  243. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/openai/openai.py +0 -0
  244. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/organization.py +0 -0
  245. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/passage.py +0 -0
  246. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/response_format.py +0 -0
  247. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/run.py +0 -0
  248. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/source.py +0 -0
  249. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/step.py +0 -0
  250. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/tool.py +0 -0
  251. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/tool_execution_result.py +0 -0
  252. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/tool_rule.py +0 -0
  253. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/usage.py +0 -0
  254. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/schemas/user.py +0 -0
  255. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/__init__.py +0 -0
  256. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_agent.py +0 -0
  257. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
  258. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_base.py +0 -0
  259. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_block.py +0 -0
  260. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
  261. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_message.py +0 -0
  262. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_tag.py +0 -0
  263. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/marshmallow_tool.py +0 -0
  264. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
  265. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/__init__.py +0 -0
  266. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/constants.py +0 -0
  267. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/db.py +0 -0
  268. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/generate_openapi_schema.sh +0 -0
  269. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/__init__.py +0 -0
  270. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/app.py +0 -0
  271. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/auth/__init__.py +0 -0
  272. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/auth/index.py +0 -0
  273. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/auth_token.py +0 -0
  274. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/chat_completions_interface.py +0 -0
  275. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/interface.py +0 -0
  276. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/optimistic_json_parser.py +0 -0
  277. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/__init__.py +0 -0
  278. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  279. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  280. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/agents.py +0 -0
  281. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  282. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/embeddings.py +0 -0
  283. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/groups.py +0 -0
  284. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/health.py +0 -0
  285. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/identities.py +0 -0
  286. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  287. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/llms.py +0 -0
  288. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/messages.py +0 -0
  289. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  290. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/providers.py +0 -0
  291. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/runs.py +0 -0
  292. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  293. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/sources.py +0 -0
  294. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/steps.py +0 -0
  295. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/tags.py +0 -0
  296. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/tools.py +0 -0
  297. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/routers/v1/users.py +0 -0
  298. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/rest_api/static_files.py +0 -0
  299. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/startup.sh +0 -0
  300. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/static_files/assets/index-048c9598.js +0 -0
  301. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  302. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/static_files/favicon.ico +0 -0
  303. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/static_files/index.html +0 -0
  304. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  305. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/utils.py +0 -0
  306. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/ws_api/__init__.py +0 -0
  307. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/ws_api/example_client.py +0 -0
  308. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/ws_api/interface.py +0 -0
  309. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/ws_api/protocol.py +0 -0
  310. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/server/ws_api/server.py +0 -0
  311. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/__init__.py +0 -0
  312. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/agent_manager.py +0 -0
  313. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/block_manager.py +0 -0
  314. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/group_manager.py +0 -0
  315. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/identity_manager.py +0 -0
  316. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/job_manager.py +0 -0
  317. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/llm_batch_manager.py +0 -0
  318. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/mcp/__init__.py +0 -0
  319. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/mcp/base_client.py +0 -0
  320. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/mcp/sse_client.py +0 -0
  321. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/mcp/stdio_client.py +0 -0
  322. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/mcp/types.py +0 -0
  323. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/message_manager.py +0 -0
  324. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/organization_manager.py +0 -0
  325. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/passage_manager.py +0 -0
  326. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/per_agent_lock_manager.py +0 -0
  327. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/provider_manager.py +0 -0
  328. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/sandbox_config_manager.py +0 -0
  329. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/source_manager.py +0 -0
  330. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/step_manager.py +0 -0
  331. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/summarizer/__init__.py +0 -0
  332. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/summarizer/enums.py +0 -0
  333. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_executor/__init__.py +0 -0
  334. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_executor/tool_execution_manager.py +0 -0
  335. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_executor/tool_executor.py +0 -0
  336. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_manager.py +0 -0
  337. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_sandbox/__init__.py +0 -0
  338. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_sandbox/base.py +0 -0
  339. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
  340. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/streaming_interface.py +0 -0
  341. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/streaming_utils.py +0 -0
  342. {letta_nightly-0.7.5.dev20250428110034 → letta_nightly-0.7.6.dev20250429104313}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.7.5.dev20250428110034
3
+ Version: 0.7.6.dev20250429104313
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -1,4 +1,4 @@
1
- __version__ = "0.7.5"
1
+ __version__ = "0.7.6"
2
2
 
3
3
  # import clients
4
4
  from letta.client.client import LocalClient, RESTClient, create_client
@@ -63,4 +63,4 @@ class BaseAgent(ABC):
63
63
  else:
64
64
  return ""
65
65
 
66
- return [{"role": input_message.role, "content": get_content(input_message)} for input_message in input_messages]
66
+ return [{"role": input_message.role.value, "content": get_content(input_message)} for input_message in input_messages]
@@ -0,0 +1,422 @@
1
+ import json
2
+ import xml.etree.ElementTree as ET
3
+ from typing import AsyncGenerator, Dict, List, Tuple, Union
4
+
5
+ import openai
6
+
7
+ from letta.agents.base_agent import BaseAgent
8
+ from letta.schemas.agent import AgentState
9
+ from letta.schemas.block import BlockUpdate
10
+ from letta.schemas.enums import MessageStreamStatus
11
+ from letta.schemas.letta_message import LegacyLettaMessage, LettaMessage
12
+ from letta.schemas.letta_message_content import TextContent
13
+ from letta.schemas.letta_response import LettaResponse
14
+ from letta.schemas.message import MessageCreate
15
+ from letta.schemas.openai.chat_completion_request import ChatCompletionRequest, SystemMessage, Tool, UserMessage
16
+ from letta.schemas.usage import LettaUsageStatistics
17
+ from letta.schemas.user import User
18
+ from letta.server.rest_api.utils import convert_in_context_letta_messages_to_openai, create_input_messages
19
+ from letta.services.agent_manager import AgentManager
20
+ from letta.services.block_manager import BlockManager
21
+ from letta.services.message_manager import MessageManager
22
+
23
+
24
+ class EphemeralMemoryAgent(BaseAgent):
25
+ """
26
+ A stateless agent that helps with offline memory computations.
27
+ """
28
+
29
+ def __init__(
30
+ self,
31
+ agent_id: str,
32
+ openai_client: openai.AsyncClient,
33
+ message_manager: MessageManager,
34
+ agent_manager: AgentManager,
35
+ block_manager: BlockManager,
36
+ target_block_label: str,
37
+ message_transcripts: List[str],
38
+ actor: User,
39
+ ):
40
+ super().__init__(
41
+ agent_id=agent_id,
42
+ openai_client=openai_client,
43
+ message_manager=message_manager,
44
+ agent_manager=agent_manager,
45
+ actor=actor,
46
+ )
47
+
48
+ self.block_manager = block_manager
49
+ self.target_block_label = target_block_label
50
+ self.message_transcripts = message_transcripts
51
+
52
+ def update_message_transcript(self, message_transcripts: List[str]):
53
+ self.message_transcripts = message_transcripts
54
+
55
+ async def step(self, input_messages: List[MessageCreate], max_steps: int = 10) -> LettaResponse:
56
+ """
57
+ Process the user's input message, allowing the model to call memory-related tools
58
+ until it decides to stop and provide a final response.
59
+ """
60
+ agent_state = self.agent_manager.get_agent_by_id(agent_id=self.agent_id, actor=self.actor)
61
+ in_context_messages = create_input_messages(input_messages=input_messages, agent_id=self.agent_id, actor=self.actor)
62
+ openai_messages = convert_in_context_letta_messages_to_openai(in_context_messages, exclude_system_messages=True)
63
+
64
+ # 1. Store memories
65
+ request = self._build_openai_request(
66
+ openai_messages, agent_state, tools=self._build_store_memory_tool_schemas(), system=self._get_memory_store_system_prompt()
67
+ )
68
+
69
+ chat_completion = await self.openai_client.chat.completions.create(**request.model_dump(exclude_unset=True))
70
+ assistant_message = chat_completion.choices[0].message
71
+
72
+ # Process tool calls
73
+ tool_call = assistant_message.tool_calls[0]
74
+ function_name = tool_call.function.name
75
+ function_args = json.loads(tool_call.function.arguments)
76
+
77
+ if function_name == "store_memory":
78
+ print("Called store_memory")
79
+ print(function_args)
80
+ for chunk_args in function_args.get("chunks"):
81
+ self.store_memory(agent_state=agent_state, **chunk_args)
82
+ result = "Successfully stored memories"
83
+ else:
84
+ raise ValueError("Error: Unknown tool function '{function_name}'")
85
+
86
+ openai_messages.append(
87
+ {
88
+ "role": "assistant",
89
+ "content": assistant_message.content,
90
+ "tool_calls": [
91
+ {
92
+ "id": tool_call.id,
93
+ "type": "function",
94
+ "function": {"name": function_name, "arguments": tool_call.function.arguments},
95
+ }
96
+ ],
97
+ }
98
+ )
99
+ openai_messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": str(result)})
100
+
101
+ # 2. Execute rethink block memory loop
102
+ human_block_content = self.agent_manager.get_block_with_label(
103
+ agent_id=self.agent_id, block_label=self.target_block_label, actor=self.actor
104
+ )
105
+ rethink_command = f"""
106
+ Here is the current memory block created earlier:
107
+
108
+ ### CURRENT MEMORY
109
+ {human_block_content}
110
+ ### END CURRENT MEMORY
111
+
112
+ Please refine this block:
113
+
114
+ - Merge in any new facts and remove outdated or contradictory details.
115
+ - Organize related information together (e.g., preferences, background, ongoing goals).
116
+ - Add any light, supportable inferences that deepen understanding—but do not invent unsupported details.
117
+
118
+ Use `rethink_memory(new_memory)` as many times as you need to iteratively improve the text. When it’s fully polished and complete, call `finish_rethinking_memory()`.
119
+ """
120
+ rethink_command = UserMessage(content=rethink_command)
121
+ openai_messages.append(rethink_command.model_dump())
122
+
123
+ for _ in range(max_steps):
124
+ request = self._build_openai_request(
125
+ openai_messages, agent_state, tools=self._build_sleeptime_tools(), system=self._get_rethink_memory_system_prompt()
126
+ )
127
+ chat_completion = await self.openai_client.chat.completions.create(**request.model_dump(exclude_unset=True))
128
+ assistant_message = chat_completion.choices[0].message
129
+
130
+ # Process tool calls
131
+ tool_call = assistant_message.tool_calls[0]
132
+ function_name = tool_call.function.name
133
+ function_args = json.loads(tool_call.function.arguments)
134
+
135
+ if function_name == "rethink_memory":
136
+ print("Called rethink_memory")
137
+ print(function_args)
138
+ result = self.rethink_memory(agent_state=agent_state, **function_args)
139
+ elif function_name == "finish_rethinking_memory":
140
+ print("Called finish_rethinking_memory")
141
+ break
142
+ else:
143
+ result = f"Error: Unknown tool function '{function_name}'"
144
+ openai_messages.append(
145
+ {
146
+ "role": "assistant",
147
+ "content": assistant_message.content,
148
+ "tool_calls": [
149
+ {
150
+ "id": tool_call.id,
151
+ "type": "function",
152
+ "function": {"name": function_name, "arguments": tool_call.function.arguments},
153
+ }
154
+ ],
155
+ }
156
+ )
157
+ openai_messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": str(result)})
158
+
159
+ # Actually save the memory:
160
+ target_block = agent_state.memory.get_block(self.target_block_label)
161
+ self.block_manager.update_block(block_id=target_block.id, block_update=BlockUpdate(value=target_block.value), actor=self.actor)
162
+
163
+ return LettaResponse(messages=[], usage=LettaUsageStatistics())
164
+
165
+ def _format_messages_llm_friendly(self):
166
+ messages = self.message_manager.list_messages_for_agent(agent_id=self.agent_id, actor=self.actor)
167
+
168
+ llm_friendly_messages = [f"{m.role}: {m.content[0].text}" for m in messages if m.content and isinstance(m.content[0], TextContent)]
169
+ return "\n".join(llm_friendly_messages)
170
+
171
+ def _build_openai_request(
172
+ self, openai_messages: List[Dict], agent_state: AgentState, tools: List[Tool], system: str
173
+ ) -> ChatCompletionRequest:
174
+ system_message = SystemMessage(role="system", content=system)
175
+ openai_request = ChatCompletionRequest(
176
+ model="gpt-4o", # agent_state.llm_config.model, # TODO: Separate config for summarizer?
177
+ messages=[system_message] + openai_messages,
178
+ tools=tools,
179
+ tool_choice="required",
180
+ user=self.actor.id,
181
+ max_completion_tokens=agent_state.llm_config.max_tokens,
182
+ temperature=agent_state.llm_config.temperature,
183
+ stream=False,
184
+ )
185
+ return openai_request
186
+
187
+ def _build_store_memory_tool_schemas(self) -> List[Tool]:
188
+ """
189
+ Build the schemas for the three memory-related tools.
190
+ """
191
+ tools = [
192
+ Tool(
193
+ type="function",
194
+ function={
195
+ "name": "store_memory",
196
+ "description": "Archive coherent chunks of dialogue that will be evicted, preserving raw lines and a brief contextual description.",
197
+ "parameters": {
198
+ "type": "object",
199
+ "properties": {
200
+ "chunks": {
201
+ "type": "array",
202
+ "items": {
203
+ "type": "object",
204
+ "properties": {
205
+ "start_index": {"type": "integer", "description": "Index of first line in original history."},
206
+ "end_index": {"type": "integer", "description": "Index of last line in original history."},
207
+ "context": {
208
+ "type": "string",
209
+ "description": "A high-level description providing context for why this chunk matters.",
210
+ },
211
+ },
212
+ "required": ["start_index", "end_index", "context"],
213
+ },
214
+ }
215
+ },
216
+ "required": ["chunks"],
217
+ "additionalProperties": False,
218
+ },
219
+ },
220
+ ),
221
+ ]
222
+
223
+ return tools
224
+
225
+ def _build_sleeptime_tools(self) -> List[Tool]:
226
+ tools = [
227
+ Tool(
228
+ type="function",
229
+ function={
230
+ "name": "rethink_memory",
231
+ "description": (
232
+ "Rewrite memory block for the main agent, new_memory should contain all current "
233
+ "information from the block that is not outdated or inconsistent, integrating any "
234
+ "new information, resulting in a new memory block that is organized, readable, and "
235
+ "comprehensive."
236
+ ),
237
+ "parameters": {
238
+ "type": "object",
239
+ "properties": {
240
+ "new_memory": {
241
+ "type": "string",
242
+ "description": (
243
+ "The new memory with information integrated from the memory block. "
244
+ "If there is no new information, then this should be the same as the "
245
+ "content in the source block."
246
+ ),
247
+ },
248
+ },
249
+ "required": ["new_memory"],
250
+ "additionalProperties": False,
251
+ },
252
+ },
253
+ ),
254
+ Tool(
255
+ type="function",
256
+ function={
257
+ "name": "finish_rethinking_memory",
258
+ "description": ("This function is called when the agent is done rethinking the memory."),
259
+ "parameters": {
260
+ "type": "object",
261
+ "properties": {},
262
+ "required": [],
263
+ "additionalProperties": False,
264
+ },
265
+ },
266
+ ),
267
+ ]
268
+
269
+ return tools
270
+
271
+ def rethink_memory(self, new_memory: str, agent_state: AgentState) -> str:
272
+ if agent_state.memory.get_block(self.target_block_label) is None:
273
+ agent_state.memory.create_block(label=self.target_block_label, value=new_memory)
274
+
275
+ agent_state.memory.update_block_value(label=self.target_block_label, value=new_memory)
276
+ return "Successfully updated memory"
277
+
278
+ def store_memory(self, start_index: int, end_index: int, context: str, agent_state: AgentState) -> str:
279
+ """
280
+ Store a memory.
281
+ """
282
+ try:
283
+ messages = self.message_transcripts[start_index : end_index + 1]
284
+ memory = self.serialize(messages, context)
285
+ self.agent_manager.passage_manager.insert_passage(
286
+ agent_state=agent_state,
287
+ agent_id=agent_state.id,
288
+ text=memory,
289
+ actor=self.actor,
290
+ )
291
+ self.agent_manager.rebuild_system_prompt(agent_id=agent_state.id, actor=self.actor, force=True)
292
+
293
+ return "Sucessfully stored memory"
294
+ except Exception as e:
295
+ return f"Failed to store memory given start_index {start_index} and end_index {end_index}: {e}"
296
+
297
+ def serialize(self, messages: List[str], context: str) -> str:
298
+ """
299
+ Produce an XML document like:
300
+
301
+ <memory>
302
+ <messages>
303
+ <message>…</message>
304
+ <message>…</message>
305
+
306
+ </messages>
307
+ <context>…</context>
308
+ </memory>
309
+ """
310
+ root = ET.Element("memory")
311
+
312
+ msgs_el = ET.SubElement(root, "messages")
313
+ for msg in messages:
314
+ m = ET.SubElement(msgs_el, "message")
315
+ m.text = msg
316
+
317
+ sum_el = ET.SubElement(root, "context")
318
+ sum_el.text = context
319
+
320
+ # ET.tostring will escape reserved chars for you
321
+ return ET.tostring(root, encoding="unicode")
322
+
323
+ def deserialize(self, xml_str: str) -> Tuple[List[str], str]:
324
+ """
325
+ Parse the XML back into (messages, context). Raises ValueError if tags are missing.
326
+ """
327
+ try:
328
+ root = ET.fromstring(xml_str)
329
+ except ET.ParseError as e:
330
+ raise ValueError(f"Invalid XML: {e}")
331
+
332
+ msgs_el = root.find("messages")
333
+ if msgs_el is None:
334
+ raise ValueError("Missing <messages> section")
335
+
336
+ messages = []
337
+ for m in msgs_el.findall("message"):
338
+ # .text may be None if empty, so coerce to empty string
339
+ messages.append(m.text or "")
340
+
341
+ sum_el = root.find("context")
342
+ if sum_el is None:
343
+ raise ValueError("Missing <context> section")
344
+ context = sum_el.text or ""
345
+
346
+ return messages, context
347
+
348
+ async def step_stream(
349
+ self, input_messages: List[MessageCreate], max_steps: int = 10
350
+ ) -> AsyncGenerator[Union[LettaMessage, LegacyLettaMessage, MessageStreamStatus], None]:
351
+ """
352
+ This agent is synchronous-only. If called in an async context, raise an error.
353
+ """
354
+ raise NotImplementedError("EphemeralMemoryAgent does not support async step.")
355
+
356
+ # TODO: Move these to independent text files
357
+ def _get_memory_store_system_prompt(self) -> str:
358
+ return """
359
+ You are a memory-recall assistant working asynchronously alongside a main chat agent that retains only a portion of the message history in its context window.
360
+
361
+ When given a full transcript with lines marked (Older) or (Newer), you should:
362
+ 1. Segment the (Older) portion into coherent chunks by topic, instruction, or preference.
363
+ 2. For each chunk, produce only:
364
+ - start_index: the first line’s index
365
+ - end_index: the last line’s index
366
+ - context: a blurb explaining why this chunk matters
367
+
368
+ Return exactly one JSON tool call to `store_memory`, consider this miniature example:
369
+
370
+ ---
371
+
372
+ (Older)
373
+ 0. user: Okay. Got it. Keep your answers shorter, please.
374
+ 1. assistant: Sure thing! I’ll keep it brief. What would you like to know?
375
+ 2. user: I like basketball.
376
+ 3. assistant: That's great! Do you have a favorite team or player?
377
+
378
+ (Newer)
379
+ 4. user: Yeah. I like basketball.
380
+ 5. assistant: Awesome! What do you enjoy most about basketball?
381
+
382
+ ---
383
+
384
+ Example output:
385
+
386
+ ```json
387
+ {
388
+ "name": "store_memory",
389
+ "arguments": {
390
+ "chunks": [
391
+ {
392
+ "start_index": 0,
393
+ "end_index": 1,
394
+ "context": "User explicitly asked the assistant to keep responses concise."
395
+ },
396
+ {
397
+ "start_index": 2,
398
+ "end_index": 3,
399
+ "context": "User enjoys basketball and prompted follow-up about their favorite team or player."
400
+ }
401
+ ]
402
+ }
403
+ }
404
+ ```
405
+ """
406
+
407
+ def _get_rethink_memory_system_prompt(self) -> str:
408
+ return """
409
+ SYSTEM
410
+ You are a Memory-Updater agent. Your job is to iteratively refine the given memory block until it’s concise, organized, and complete.
411
+
412
+ Instructions:
413
+ - Call `rethink_memory(new_memory: string)` as many times as you like. Each call should submit a fully revised version of the block so far.
414
+ - When you’re fully satisfied, call `finish_rethinking_memory()`.
415
+ - Don’t output anything else—only the JSON for these tool calls.
416
+
417
+ Goals:
418
+ - Merge in new facts and remove contradictions.
419
+ - Group related details (preferences, biography, goals).
420
+ - Draw light, supportable inferences without inventing facts.
421
+ - Preserve every critical piece of information.
422
+ """