letta-nightly 0.6.8.dev20250110104102__tar.gz → 0.6.8.dev20250110190527__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 (235) hide show
  1. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/PKG-INFO +1 -1
  2. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/agent.py +1 -2
  3. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/constants.py +0 -1
  4. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/enums.py +6 -0
  5. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/agent.py +0 -1
  6. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/tool.py +3 -6
  7. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/sandbox_configs.py +2 -1
  8. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/tools.py +1 -0
  9. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/server.py +7 -14
  10. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/helpers/agent_manager_helper.py +0 -2
  11. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/sandbox_config_manager.py +6 -7
  12. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/tool_execution_sandbox.py +16 -6
  13. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/pyproject.toml +1 -1
  14. letta_nightly-0.6.8.dev20250110104102/letta/o1_agent.py +0 -86
  15. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/LICENSE +0 -0
  16. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/README.md +0 -0
  17. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/__init__.py +0 -0
  18. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/__main__.py +0 -0
  19. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/benchmark/benchmark.py +0 -0
  20. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/benchmark/constants.py +0 -0
  21. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/chat_only_agent.py +0 -0
  22. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/cli/cli.py +0 -0
  23. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/cli/cli_config.py +0 -0
  24. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/cli/cli_load.py +0 -0
  25. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/client/__init__.py +0 -0
  26. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/client/client.py +0 -0
  27. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/client/streaming.py +0 -0
  28. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/client/utils.py +0 -0
  29. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/config.py +0 -0
  30. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/credentials.py +0 -0
  31. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/data_sources/connectors.py +0 -0
  32. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/data_sources/connectors_helper.py +0 -0
  33. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/embeddings.py +0 -0
  34. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/errors.py +0 -0
  35. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/functions/__init__.py +0 -0
  36. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/functions/function_sets/base.py +0 -0
  37. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/functions/function_sets/extras.py +0 -0
  38. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/functions/functions.py +0 -0
  39. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/functions/helpers.py +0 -0
  40. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/functions/schema_generator.py +0 -0
  41. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/helpers/__init__.py +0 -0
  42. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/helpers/tool_rule_solver.py +0 -0
  43. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/humans/__init__.py +0 -0
  44. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/humans/examples/basic.txt +0 -0
  45. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/humans/examples/cs_phd.txt +0 -0
  46. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/interface.py +0 -0
  47. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/__init__.py +0 -0
  48. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/anthropic.py +0 -0
  49. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/azure_openai.py +0 -0
  50. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/azure_openai_constants.py +0 -0
  51. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/cohere.py +0 -0
  52. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/google_ai.py +0 -0
  53. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/helpers.py +0 -0
  54. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/llm_api_tools.py +0 -0
  55. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/mistral.py +0 -0
  56. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/llm_api/openai.py +0 -0
  57. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/README.md +0 -0
  58. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/__init__.py +0 -0
  59. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/chat_completion_proxy.py +0 -0
  60. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/constants.py +0 -0
  61. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/function_parser.py +0 -0
  62. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/grammars/__init__.py +0 -0
  63. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  64. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/grammars/json.gbnf +0 -0
  65. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  66. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/json_parser.py +0 -0
  67. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/koboldcpp/api.py +0 -0
  68. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/koboldcpp/settings.py +0 -0
  69. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llamacpp/api.py +0 -0
  70. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llamacpp/settings.py +0 -0
  71. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  72. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  73. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  74. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  75. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  76. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  77. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  78. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  79. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  80. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/lmstudio/api.py +0 -0
  81. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/lmstudio/settings.py +0 -0
  82. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/ollama/api.py +0 -0
  83. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/ollama/settings.py +0 -0
  84. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/settings/__init__.py +0 -0
  85. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  86. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/settings/settings.py +0 -0
  87. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/settings/simple.py +0 -0
  88. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/utils.py +0 -0
  89. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/vllm/api.py +0 -0
  90. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/webui/api.py +0 -0
  91. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/webui/legacy_api.py +0 -0
  92. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/webui/legacy_settings.py +0 -0
  93. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/local_llm/webui/settings.py +0 -0
  94. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/log.py +0 -0
  95. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/main.py +0 -0
  96. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/memory.py +0 -0
  97. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/offline_memory_agent.py +0 -0
  98. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/openai_backcompat/__init__.py +0 -0
  99. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/openai_backcompat/openai_object.py +0 -0
  100. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/__all__.py +0 -0
  101. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/__init__.py +0 -0
  102. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/agent.py +0 -0
  103. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/agents_tags.py +0 -0
  104. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/base.py +0 -0
  105. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/block.py +0 -0
  106. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/blocks_agents.py +0 -0
  107. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/custom_columns.py +0 -0
  108. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/errors.py +0 -0
  109. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/file.py +0 -0
  110. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/job.py +0 -0
  111. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/message.py +0 -0
  112. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/mixins.py +0 -0
  113. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/organization.py +0 -0
  114. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/passage.py +0 -0
  115. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/provider.py +0 -0
  116. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/sandbox_config.py +0 -0
  117. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/source.py +0 -0
  118. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/sources_agents.py +0 -0
  119. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/sqlalchemy_base.py +0 -0
  120. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/sqlite_functions.py +0 -0
  121. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/tool.py +0 -0
  122. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/tools_agents.py +0 -0
  123. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/orm/user.py +0 -0
  124. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/__init__.py +0 -0
  125. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/anna_pa.txt +0 -0
  126. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/google_search_persona.txt +0 -0
  127. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/memgpt_doc.txt +0 -0
  128. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/memgpt_starter.txt +0 -0
  129. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/o1_persona.txt +0 -0
  130. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/offline_memory_persona.txt +0 -0
  131. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/sam.txt +0 -0
  132. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/sam_pov.txt +0 -0
  133. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  134. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/personas/examples/sqldb/test.db +0 -0
  135. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/__init__.py +0 -0
  136. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/gpt_summarize.py +0 -0
  137. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/gpt_system.py +0 -0
  138. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_base.txt +0 -0
  139. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_chat.txt +0 -0
  140. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  141. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  142. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  143. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_doc.txt +0 -0
  144. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  145. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  146. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  147. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  148. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  149. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  150. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/providers.py +0 -0
  151. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/pytest.ini +0 -0
  152. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/block.py +0 -0
  153. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/embedding_config.py +0 -0
  154. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/enums.py +0 -0
  155. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/environment_variables.py +0 -0
  156. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/file.py +0 -0
  157. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/health.py +0 -0
  158. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/job.py +0 -0
  159. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/letta_base.py +0 -0
  160. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/letta_message.py +0 -0
  161. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/letta_request.py +0 -0
  162. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/letta_response.py +0 -0
  163. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/llm_config.py +0 -0
  164. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/memory.py +0 -0
  165. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/message.py +0 -0
  166. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/openai/chat_completion_request.py +0 -0
  167. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/openai/chat_completion_response.py +0 -0
  168. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/openai/chat_completions.py +0 -0
  169. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/openai/embedding_response.py +0 -0
  170. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/openai/openai.py +0 -0
  171. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/organization.py +0 -0
  172. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/passage.py +0 -0
  173. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/sandbox_config.py +0 -0
  174. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/source.py +0 -0
  175. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/tool_rule.py +0 -0
  176. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/usage.py +0 -0
  177. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/schemas/user.py +0 -0
  178. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/__init__.py +0 -0
  179. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/constants.py +0 -0
  180. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/generate_openapi_schema.sh +0 -0
  181. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/__init__.py +0 -0
  182. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/app.py +0 -0
  183. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/auth/__init__.py +0 -0
  184. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/auth/index.py +0 -0
  185. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/auth_token.py +0 -0
  186. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/interface.py +0 -0
  187. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/__init__.py +0 -0
  188. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/openai/__init__.py +0 -0
  189. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/openai/assistants/__init__.py +0 -0
  190. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/openai/assistants/assistants.py +0 -0
  191. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/openai/assistants/schemas.py +0 -0
  192. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  193. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  194. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  195. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/agents.py +0 -0
  196. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  197. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/health.py +0 -0
  198. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  199. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/llms.py +0 -0
  200. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  201. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/providers.py +0 -0
  202. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/sources.py +0 -0
  203. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/routers/v1/users.py +0 -0
  204. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/static_files.py +0 -0
  205. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/rest_api/utils.py +0 -0
  206. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/startup.sh +0 -0
  207. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/static_files/assets/index-048c9598.js +0 -0
  208. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  209. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/static_files/favicon.ico +0 -0
  210. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/static_files/index.html +0 -0
  211. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  212. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/utils.py +0 -0
  213. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/ws_api/__init__.py +0 -0
  214. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/ws_api/example_client.py +0 -0
  215. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/ws_api/interface.py +0 -0
  216. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/ws_api/protocol.py +0 -0
  217. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/server/ws_api/server.py +0 -0
  218. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/__init__.py +0 -0
  219. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/agent_manager.py +0 -0
  220. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/block_manager.py +0 -0
  221. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/job_manager.py +0 -0
  222. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/message_manager.py +0 -0
  223. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/organization_manager.py +0 -0
  224. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/passage_manager.py +0 -0
  225. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/per_agent_lock_manager.py +0 -0
  226. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/provider_manager.py +0 -0
  227. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/source_manager.py +0 -0
  228. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/tool_manager.py +0 -0
  229. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/tool_sandbox_env/.gitkeep +0 -0
  230. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/services/user_manager.py +0 -0
  231. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/settings.py +0 -0
  232. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/streaming_interface.py +0 -0
  233. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/streaming_utils.py +0 -0
  234. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/system.py +0 -0
  235. {letta_nightly-0.6.8.dev20250110104102 → letta_nightly-0.6.8.dev20250110190527}/letta/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.8.dev20250110104102
3
+ Version: 0.6.8.dev20250110190527
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -16,7 +16,6 @@ from letta.constants import (
16
16
  MESSAGE_SUMMARY_TRUNC_KEEP_N_LAST,
17
17
  MESSAGE_SUMMARY_TRUNC_TOKEN_FRAC,
18
18
  MESSAGE_SUMMARY_WARNING_FRAC,
19
- O1_BASE_TOOLS,
20
19
  REQ_HEARTBEAT_MESSAGE,
21
20
  )
22
21
  from letta.errors import ContextWindowExceededError
@@ -212,7 +211,7 @@ class Agent(BaseAgent):
212
211
  # TODO: This is NO BUENO
213
212
  # TODO: Matching purely by names is extremely problematic, users can create tools with these names and run them in the agent loop
214
213
  # TODO: We will have probably have to match the function strings exactly for safety
215
- if function_name in BASE_TOOLS or function_name in O1_BASE_TOOLS:
214
+ if function_name in BASE_TOOLS:
216
215
  # base tools are allowed to access the `Agent` object and run on the database
217
216
  function_args["self"] = self # need to attach self to arg since it's dynamically linked
218
217
  function_response = callable_func(**function_args)
@@ -42,7 +42,6 @@ DEFAULT_PRESET = "memgpt_chat"
42
42
  # Base tools that cannot be edited, as they access agent state directly
43
43
  # Note that we don't include "conversation_search_date" for now
44
44
  BASE_TOOLS = ["send_message", "conversation_search", "archival_memory_insert", "archival_memory_search"]
45
- O1_BASE_TOOLS = ["send_thinking_message", "send_final_message"]
46
45
  # Base memory tools CAN be edited, and are added by default by the server
47
46
  BASE_MEMORY_TOOLS = ["core_memory_append", "core_memory_replace"]
48
47
 
@@ -1,6 +1,12 @@
1
1
  from enum import Enum
2
2
 
3
3
 
4
+ class ToolType(str, Enum):
5
+ CUSTOM = "custom"
6
+ LETTA_CORE = "letta_core"
7
+ LETTA_MEMORY_CORE = "letta_memory_core"
8
+
9
+
4
10
  class ToolSourceType(str, Enum):
5
11
  """Defines what a tool was derived from"""
6
12
 
@@ -25,7 +25,6 @@ class AgentType(str, Enum):
25
25
 
26
26
  memgpt_agent = "memgpt_agent"
27
27
  split_thread_agent = "split_thread_agent"
28
- o1_agent = "o1_agent"
29
28
  offline_memory_agent = "offline_memory_agent"
30
29
  chat_only_agent = "chat_only_agent"
31
30
 
@@ -206,19 +206,16 @@ class ToolUpdate(LettaBase):
206
206
  json_schema: Optional[Dict] = Field(
207
207
  None, description="The JSON schema of the function (auto-generated from source_code if not provided)"
208
208
  )
209
+ return_char_limit: Optional[int] = Field(None, description="The maximum number of characters in the response.")
209
210
 
210
211
  class Config:
211
212
  extra = "ignore" # Allows extra fields without validation errors
212
213
  # TODO: Remove this, and clean usage of ToolUpdate everywhere else
213
214
 
214
215
 
215
- class ToolRun(LettaBase):
216
- id: str = Field(..., description="The ID of the tool to run.")
217
- args: str = Field(..., description="The arguments to pass to the tool (as stringified JSON).")
218
-
219
-
220
216
  class ToolRunFromSource(LettaBase):
221
217
  source_code: str = Field(..., description="The source code of the function.")
222
- args: str = Field(..., description="The arguments to pass to the tool (as stringified JSON).")
218
+ args: Dict[str, str] = Field(..., description="The arguments to pass to the tool.")
219
+ env_vars: Dict[str, str] = Field(None, description="The environment variables to pass to the tool.")
223
220
  name: Optional[str] = Field(None, description="The name of the tool to run.")
224
221
  source_type: Optional[str] = Field(None, description="The type of the source code.")
@@ -69,11 +69,12 @@ def delete_sandbox_config(
69
69
  def list_sandbox_configs(
70
70
  limit: int = Query(1000, description="Number of results to return"),
71
71
  cursor: Optional[str] = Query(None, description="Pagination cursor to fetch the next set of results"),
72
+ sandbox_type: Optional[SandboxType] = Query(None, description="Filter for this specific sandbox type"),
72
73
  server: SyncServer = Depends(get_letta_server),
73
74
  user_id: str = Depends(get_user_id),
74
75
  ):
75
76
  actor = server.user_manager.get_user_or_default(user_id=user_id)
76
- return server.sandbox_config_manager.list_sandbox_configs(actor, limit=limit, cursor=cursor)
77
+ return server.sandbox_config_manager.list_sandbox_configs(actor, limit=limit, cursor=cursor, sandbox_type=sandbox_type)
77
78
 
78
79
 
79
80
  ### Sandbox Environment Variable Routes
@@ -181,6 +181,7 @@ def run_tool_from_source(
181
181
  tool_source=request.source_code,
182
182
  tool_source_type=request.source_type,
183
183
  tool_args=request.args,
184
+ tool_env_vars=request.env_vars,
184
185
  tool_name=request.name,
185
186
  actor=actor,
186
187
  )
@@ -1,11 +1,10 @@
1
1
  # inspecting tools
2
- import json
3
2
  import os
4
3
  import traceback
5
4
  import warnings
6
5
  from abc import abstractmethod
7
6
  from datetime import datetime
8
- from typing import Callable, List, Optional, Tuple, Union
7
+ from typing import Callable, Dict, List, Optional, Tuple, Union
9
8
 
10
9
  from composio.client import Composio
11
10
  from composio.client.collections import ActionModel, AppModel
@@ -23,7 +22,6 @@ from letta.data_sources.connectors import DataConnector, load_data
23
22
  from letta.interface import AgentInterface # abstract
24
23
  from letta.interface import CLIInterface # for printing to terminal
25
24
  from letta.log import get_logger
26
- from letta.o1_agent import O1Agent
27
25
  from letta.offline_memory_agent import OfflineMemoryAgent
28
26
  from letta.orm import Base
29
27
  from letta.orm.errors import NoResultFound
@@ -391,8 +389,6 @@ class SyncServer(Server):
391
389
  interface = interface or self.default_interface_factory()
392
390
  if agent_state.agent_type == AgentType.memgpt_agent:
393
391
  agent = Agent(agent_state=agent_state, interface=interface, user=actor)
394
- elif agent_state.agent_type == AgentType.o1_agent:
395
- agent = O1Agent(agent_state=agent_state, interface=interface, user=actor)
396
392
  elif agent_state.agent_type == AgentType.offline_memory_agent:
397
393
  agent = OfflineMemoryAgent(agent_state=agent_state, interface=interface, user=actor)
398
394
  elif agent_state.agent_type == AgentType.chat_only_agent:
@@ -1117,22 +1113,17 @@ class SyncServer(Server):
1117
1113
  def run_tool_from_source(
1118
1114
  self,
1119
1115
  actor: User,
1120
- tool_args: str,
1116
+ tool_args: Dict[str, str],
1121
1117
  tool_source: str,
1118
+ tool_env_vars: Optional[Dict[str, str]] = None,
1122
1119
  tool_source_type: Optional[str] = None,
1123
1120
  tool_name: Optional[str] = None,
1124
1121
  ) -> ToolReturnMessage:
1125
1122
  """Run a tool from source code"""
1126
-
1127
- try:
1128
- tool_args_dict = json.loads(tool_args)
1129
- except json.JSONDecodeError:
1130
- raise ValueError("Invalid JSON string for tool_args")
1131
-
1132
1123
  if tool_source_type is not None and tool_source_type != "python":
1133
1124
  raise ValueError("Only Python source code is supported at this time")
1134
1125
 
1135
- # NOTE: we're creating a floating Tool object and NOT persiting to DB
1126
+ # NOTE: we're creating a floating Tool object and NOT persisting to DB
1136
1127
  tool = Tool(
1137
1128
  name=tool_name,
1138
1129
  source_code=tool_source,
@@ -1144,7 +1135,9 @@ class SyncServer(Server):
1144
1135
 
1145
1136
  # Next, attempt to run the tool with the sandbox
1146
1137
  try:
1147
- sandbox_run_result = ToolExecutionSandbox(tool.name, tool_args_dict, actor, tool_object=tool).run(agent_state=agent_state)
1138
+ sandbox_run_result = ToolExecutionSandbox(tool.name, tool_args, actor, tool_object=tool).run(
1139
+ agent_state=agent_state, additional_env_vars=tool_env_vars
1140
+ )
1148
1141
  return ToolReturnMessage(
1149
1142
  id="null",
1150
1143
  tool_call_id="null",
@@ -89,8 +89,6 @@ def derive_system_message(agent_type: AgentType, system: Optional[str] = None):
89
89
  # TODO: don't hardcode
90
90
  if agent_type == AgentType.memgpt_agent:
91
91
  system = gpt_system.get_system_text("memgpt_chat")
92
- elif agent_type == AgentType.o1_agent:
93
- system = gpt_system.get_system_text("memgpt_modified_o1")
94
92
  elif agent_type == AgentType.offline_memory_agent:
95
93
  system = gpt_system.get_system_text("memgpt_offline_memory")
96
94
  elif agent_type == AgentType.chat_only_agent:
@@ -111,16 +111,15 @@ class SandboxConfigManager:
111
111
 
112
112
  @enforce_types
113
113
  def list_sandbox_configs(
114
- self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50
114
+ self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50, sandbox_type: Optional[SandboxType] = None
115
115
  ) -> List[PydanticSandboxConfig]:
116
116
  """List all sandbox configurations with optional pagination."""
117
+ kwargs = {"organization_id": actor.organization_id}
118
+ if sandbox_type:
119
+ kwargs.update({"type": sandbox_type})
120
+
117
121
  with self.session_maker() as session:
118
- sandboxes = SandboxConfigModel.list(
119
- db_session=session,
120
- cursor=cursor,
121
- limit=limit,
122
- organization_id=actor.organization_id,
123
- )
122
+ sandboxes = SandboxConfigModel.list(db_session=session, cursor=cursor, limit=limit, **kwargs)
124
123
  return [sandbox.to_pydantic() for sandbox in sandboxes]
125
124
 
126
125
  @enforce_types
@@ -59,22 +59,23 @@ class ToolExecutionSandbox:
59
59
  self.sandbox_config_manager = SandboxConfigManager(tool_settings)
60
60
  self.force_recreate = force_recreate
61
61
 
62
- def run(self, agent_state: Optional[AgentState] = None) -> SandboxRunResult:
62
+ def run(self, agent_state: Optional[AgentState] = None, additional_env_vars: Optional[Dict] = None) -> SandboxRunResult:
63
63
  """
64
64
  Run the tool in a sandbox environment.
65
65
 
66
66
  Args:
67
67
  agent_state (Optional[AgentState]): The state of the agent invoking the tool
68
+ additional_env_vars (Optional[Dict]): Environment variables to inject into the sandbox
68
69
 
69
70
  Returns:
70
71
  Tuple[Any, Optional[AgentState]]: Tuple containing (tool_result, agent_state)
71
72
  """
72
73
  if tool_settings.e2b_api_key:
73
74
  logger.debug(f"Using e2b sandbox to execute {self.tool_name}")
74
- result = self.run_e2b_sandbox(agent_state=agent_state)
75
+ result = self.run_e2b_sandbox(agent_state=agent_state, additional_env_vars=additional_env_vars)
75
76
  else:
76
77
  logger.debug(f"Using local sandbox to execute {self.tool_name}")
77
- result = self.run_local_dir_sandbox(agent_state=agent_state)
78
+ result = self.run_local_dir_sandbox(agent_state=agent_state, additional_env_vars=additional_env_vars)
78
79
 
79
80
  # Log out any stdout/stderr from the tool run
80
81
  logger.debug(f"Executed tool '{self.tool_name}', logging output from tool run: \n")
@@ -98,19 +99,25 @@ class ToolExecutionSandbox:
98
99
  os.environ.clear()
99
100
  os.environ.update(original_env) # Restore original environment variables
100
101
 
101
- def run_local_dir_sandbox(self, agent_state: Optional[AgentState] = None) -> SandboxRunResult:
102
+ def run_local_dir_sandbox(
103
+ self, agent_state: Optional[AgentState] = None, additional_env_vars: Optional[Dict] = None
104
+ ) -> SandboxRunResult:
102
105
  sbx_config = self.sandbox_config_manager.get_or_create_default_sandbox_config(sandbox_type=SandboxType.LOCAL, actor=self.user)
103
106
  local_configs = sbx_config.get_local_config()
104
107
 
105
108
  # Get environment variables for the sandbox
106
- env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(sandbox_config_id=sbx_config.id, actor=self.user, limit=100)
107
109
  env = os.environ.copy()
110
+ env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(sandbox_config_id=sbx_config.id, actor=self.user, limit=100)
108
111
  env.update(env_vars)
109
112
 
110
113
  # Get environment variables for this agent specifically
111
114
  if agent_state:
112
115
  env.update(agent_state.get_agent_env_vars_as_dict())
113
116
 
117
+ # Finally, get any that are passed explicitly into the `run` function call
118
+ if additional_env_vars:
119
+ env.update(additional_env_vars)
120
+
114
121
  # Safety checks
115
122
  if not os.path.isdir(local_configs.sandbox_dir):
116
123
  raise FileNotFoundError(f"Sandbox directory does not exist: {local_configs.sandbox_dir}")
@@ -277,7 +284,7 @@ class ToolExecutionSandbox:
277
284
 
278
285
  # e2b sandbox specific functions
279
286
 
280
- def run_e2b_sandbox(self, agent_state: Optional[AgentState] = None) -> SandboxRunResult:
287
+ def run_e2b_sandbox(self, agent_state: Optional[AgentState] = None, additional_env_vars: Optional[Dict] = None) -> SandboxRunResult:
281
288
  sbx_config = self.sandbox_config_manager.get_or_create_default_sandbox_config(sandbox_type=SandboxType.E2B, actor=self.user)
282
289
  sbx = self.get_running_e2b_sandbox_with_same_state(sbx_config)
283
290
  if not sbx or self.force_recreate:
@@ -300,6 +307,9 @@ class ToolExecutionSandbox:
300
307
  if agent_state:
301
308
  env_vars.update(agent_state.get_agent_env_vars_as_dict())
302
309
 
310
+ # Finally, get any that are passed explicitly into the `run` function call
311
+ if additional_env_vars:
312
+ env_vars.update(additional_env_vars)
303
313
  code = self.generate_execution_script(agent_state=agent_state)
304
314
  execution = sbx.run_code(code, envs=env_vars)
305
315
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "letta-nightly"
3
- version = "0.6.8.dev20250110104102"
3
+ version = "0.6.8.dev20250110190527"
4
4
  packages = [
5
5
  {include = "letta"},
6
6
  ]
@@ -1,86 +0,0 @@
1
- from typing import List, Optional, Union
2
-
3
- from letta.agent import Agent, save_agent
4
- from letta.interface import AgentInterface
5
- from letta.schemas.agent import AgentState
6
- from letta.schemas.message import Message
7
- from letta.schemas.openai.chat_completion_response import UsageStatistics
8
- from letta.schemas.usage import LettaUsageStatistics
9
- from letta.schemas.user import User
10
-
11
-
12
- def send_thinking_message(self: "Agent", message: str) -> Optional[str]:
13
- """
14
- Sends a thinking message so that the model can reason out loud before responding.
15
-
16
- Args:
17
- message (str): Message contents. All unicode (including emojis) are supported.
18
-
19
- Returns:
20
- Optional[str]: None is always returned as this function does not produce a response.
21
- """
22
- self.interface.internal_monologue(message)
23
- return None
24
-
25
-
26
- def send_final_message(self: "Agent", message: str) -> Optional[str]:
27
- """
28
- Sends a final message to the human user after thinking for a while.
29
-
30
- Args:
31
- message (str): Message contents. All unicode (including emojis) are supported.
32
-
33
- Returns:
34
- Optional[str]: None is always returned as this function does not produce a response.
35
- """
36
- self.interface.internal_monologue(message)
37
- return None
38
-
39
-
40
- class O1Agent(Agent):
41
- def __init__(
42
- self,
43
- interface: AgentInterface,
44
- agent_state: AgentState,
45
- user: User,
46
- max_thinking_steps: int = 10,
47
- first_message_verify_mono: bool = False,
48
- ):
49
- super().__init__(interface, agent_state, user)
50
- self.max_thinking_steps = max_thinking_steps
51
- self.first_message_verify_mono = first_message_verify_mono
52
-
53
- def step(
54
- self,
55
- messages: Union[Message, List[Message]],
56
- chaining: bool = True,
57
- max_chaining_steps: Optional[int] = None,
58
- **kwargs,
59
- ) -> LettaUsageStatistics:
60
- """Run Agent.inner_step in a loop, terminate when final thinking message is sent or max_thinking_steps is reached"""
61
- # assert ms is not None, "MetadataStore is required"
62
- next_input_message = messages if isinstance(messages, list) else [messages]
63
-
64
- counter = 0
65
- total_usage = UsageStatistics()
66
- step_count = 0
67
- while step_count < self.max_thinking_steps:
68
- if counter > 0:
69
- next_input_message = []
70
-
71
- kwargs["first_message"] = False
72
- step_response = self.inner_step(
73
- messages=next_input_message,
74
- **kwargs,
75
- )
76
- usage = step_response.usage
77
- step_count += 1
78
- total_usage += usage
79
- counter += 1
80
- self.interface.step_complete()
81
- # check if it is final thinking message
82
- if step_response.messages[-1].name == "send_final_message":
83
- break
84
- save_agent(self)
85
-
86
- return LettaUsageStatistics(**total_usage.model_dump(), step_count=step_count)