Letta is the platform for building stateful agents: AI with advanced memory that can learn and self-improve over time.
6450 matches across 19 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_modal_sandbox_v2.py | 18 | def test_execute_tool_dynamic_success(self): |
| LOW | tests/test_modal_sandbox_v2.py | 42 | def test_execute_tool_dynamic_with_error(self): |
| LOW | tests/test_modal_sandbox_v2.py | 92 | def test_execute_with_stdout_capture(self): |
| LOW | tests/test_modal_sandbox_v2.py | 124 | async def test_register_and_get_deployment(self): |
| LOW | tests/test_modal_sandbox_v2.py | 374 | def test_version_hash_calculation(self, mock_tool, mock_user, mock_sandbox_config): |
| LOW | tests/test_modal_sandbox_v2.py | 450 | async def test_run_with_mocked_modal(self, mock_tool, mock_user, mock_sandbox_config): |
| LOW | tests/test_modal_sandbox_v2.py | 537 | def test_detect_async_function(self, mock_user): |
| LOW | tests/test_context_window_calculator.py | 16 | def test_returns_none_for_missing_tag(self): |
| LOW | tests/test_context_window_calculator.py | 21 | def test_returns_none_for_missing_opening_tag(self): |
| LOW | tests/test_context_window_calculator.py | 26 | def test_returns_none_for_unclosed_tag(self): |
| LOW | tests/test_context_window_calculator.py | 31 | def test_handles_multiline_content(self): |
| LOW | tests/test_context_window_calculator.py | 36 | def test_handles_nested_content(self): |
| LOW | tests/test_context_window_calculator.py | 41 | def test_handles_empty_content(self): |
| LOW | tests/test_context_window_calculator.py | 46 | def test_extracts_first_occurrence_with_duplicate_tags(self): |
| LOW | tests/test_context_window_calculator.py | 56 | def test_extracts_standard_agent_sections(self): |
| LOW | tests/test_context_window_calculator.py | 106 | def test_extracts_tool_usage_rules(self): |
| LOW | tests/test_context_window_calculator.py | 181 | def test_returns_correct_dict_keys(self): |
| LOW | tests/test_context_window_calculator.py | 194 | def test_no_base_instructions_tag_extracts_preamble(self): |
| LOW | tests/test_context_window_calculator.py | 216 | def test_nested_memory_filesystem_not_extracted_as_top_level(self): |
| LOW | tests/test_context_window_calculator.py | 244 | def test_top_level_memory_filesystem_outside_memory_blocks(self): |
| LOW | tests/test_context_window_calculator.py | 266 | def test_letta_code_agent_real_format(self): |
| LOW | tests/test_context_window_calculator.py | 320 | def test_git_enabled_agent_bare_file_blocks_captured_as_core_memory(self): |
| LOW | tests/test_context_window_calculator.py | 354 | def test_git_enabled_agent_no_bare_blocks(self): |
| LOW | tests/test_context_window_calculator.py | 367 | def test_extract_top_level_tag_dual_occurrence_nested_first(self): |
| LOW | tests/test_context_window_calculator.py | 380 | def test_extract_system_prompt_pure_text_no_tags(self): |
| LOW | tests/test_context_window_calculator.py | 388 | def test_git_backed_memory_without_memory_blocks_wrapper(self): |
| LOW | tests/test_context_window_calculator.py | 478 | async def test_calculate_context_window_standard_agent(self): |
| LOW | tests/test_context_window_calculator.py | 519 | async def test_calculate_context_window_skips_empty_sections(self): |
| LOW | tests/test_context_window_calculator.py | 546 | async def test_calculate_context_window_all_sections(self): |
| LOW | tests/test_context_window_calculator.py | 598 | async def test_calculate_context_window_git_enabled_agent(self): |
| LOW | tests/test_context_window_calculator.py | 88 | def test_extracts_git_enabled_agent_sections(self): |
| LOW | tests/test_context_window_calculator.py | 121 | def test_extracts_directories(self): |
| LOW | tests/test_context_window_calculator.py | 141 | def test_handles_react_agent_no_memory_blocks(self): |
| LOW | tests/test_context_window_calculator.py | 157 | def test_handles_all_sections_present(self): |
| LOW | tests/test_context_window_calculator.py | 176 | def test_handles_empty_string(self): |
| LOW | tests/test_context_window_calculator.py | 423 | def test_legacy_memory_blocks_wrapper(self): |
| LOW | tests/test_openai_ws_session.py | 56 | async def test_iteration_without_context_manager(self): |
| LOW | tests/test_openai_ws_session.py | 77 | async def test_aclose_is_idempotent(self): |
| LOW | tests/test_openai_ws_session.py | 84 | async def test_stream_after_close_raises(self): |
| LOW | tests/test_openai_ws_session.py | 100 | async def test_stream_responses_yields_events_and_stops_on_terminal(self): |
| LOW | tests/test_openai_ws_session.py | 162 | def test_letta_llm_stream_adapter_stores_flag(self): |
| LOW | tests/test_openai_ws_session.py | 178 | def test_default_flag_is_false(self): |
| LOW | tests/test_openai_ws_session.py | 193 | async def test_aclose_default_is_noop(self): |
| LOW | tests/integration_test_turbopuffer.py | 163 | def test_should_use_tpuf_with_settings(): |
| LOW | tests/integration_test_turbopuffer.py | 356 | async def test_native_only_operations(server, default_user, sarah_agent, disable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 1899 | async def test_archive_namespace_tracking(server, default_user, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 190 | async def test_archive_creation_with_tpuf_enabled(server, default_user, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 200 | async def test_archive_creation_with_tpuf_disabled(server, default_user, disable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 211 | async def test_dual_write_and_query_with_real_tpuf(server, default_user, sarah_agent, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 287 | async def test_turbopuffer_metadata_attributes(default_user, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 390 | async def test_hybrid_search_with_real_tpuf(default_user, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 496 | async def test_tag_filtering_with_real_tpuf(default_user, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 623 | async def test_temporal_filtering_with_real_tpuf(default_user, enable_turbopuffer): |
| LOW | tests/integration_test_turbopuffer.py | 761 | def test_should_use_tpuf_for_messages_settings(): |
| LOW | tests/integration_test_turbopuffer.py | 803 | def test_message_text_extraction(server, default_user): |
| LOW | tests/integration_test_turbopuffer.py | 946 | async def test_message_embedding_without_config(server, default_user, sarah_agent, enable_message_embedding): |
| LOW | tests/integration_test_turbopuffer.py | 984 | async def test_generic_reciprocal_rank_fusion(): |
| LOW | tests/integration_test_turbopuffer.py | 1085 | async def test_message_dual_write_with_real_tpuf(enable_message_embedding, default_user): |
| LOW | tests/integration_test_turbopuffer.py | 1147 | async def test_message_vector_search_with_real_tpuf(enable_message_embedding, default_user): |
| LOW | tests/integration_test_turbopuffer.py | 1208 | async def test_message_hybrid_search_with_real_tpuf(enable_message_embedding, default_user): |
| 2916 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | conf.yaml | 56 | # ============================================================================= |
| MEDIUM | conf.yaml | 58 | # ============================================================================= |
| MEDIUM | conf.yaml | 63 | # ============================================================================= |
| MEDIUM | conf.yaml | 65 | # ============================================================================= |
| MEDIUM | conf.yaml | 71 | # ============================================================================= |
| MEDIUM | conf.yaml | 73 | # ============================================================================= |
| MEDIUM | conf.yaml | 106 | # ============================================================================= |
| MEDIUM | conf.yaml | 108 | # ============================================================================= |
| MEDIUM | conf.yaml | 112 | # ============================================================================= |
| MEDIUM | conf.yaml | 114 | # ============================================================================= |
| MEDIUM | conf.yaml | 117 | # ============================================================================= |
| MEDIUM | conf.yaml | 119 | # ============================================================================= |
| MEDIUM | conf.yaml | 126 | # ============================================================================= |
| MEDIUM | conf.yaml | 128 | # ============================================================================= |
| MEDIUM | conf.yaml | 133 | # ============================================================================= |
| MEDIUM | conf.yaml | 135 | # ============================================================================= |
| MEDIUM | conf.yaml | 143 | # ============================================================================= |
| MEDIUM | conf.yaml | 145 | # ============================================================================= |
| MEDIUM | conf.yaml | 153 | # ============================================================================= |
| MEDIUM | conf.yaml | 155 | # ============================================================================= |
| MEDIUM | conf.yaml | 160 | # ============================================================================= |
| MEDIUM | conf.yaml | 162 | # ============================================================================= |
| MEDIUM | conf.yaml | 166 | # ============================================================================= |
| MEDIUM | conf.yaml | 168 | # ============================================================================= |
| MEDIUM | conf.yaml | 172 | # ============================================================================= |
| MEDIUM | conf.yaml | 174 | # ============================================================================= |
| MEDIUM | conf.yaml | 178 | # ============================================================================= |
| MEDIUM | conf.yaml | 180 | # ============================================================================= |
| MEDIUM | conf.yaml | 183 | # ============================================================================= |
| MEDIUM | conf.yaml | 185 | # ============================================================================= |
| MEDIUM | conf.yaml | 200 | # ============================================================================= |
| MEDIUM | conf.yaml | 202 | # ============================================================================= |
| MEDIUM | conf.yaml | 209 | # ============================================================================= |
| MEDIUM | conf.yaml | 211 | # ============================================================================= |
| MEDIUM | conf.yaml | 12 | # ============================================================================= |
| MEDIUM | conf.yaml | 14 | # ============================================================================= |
| MEDIUM | conf.yaml | 27 | # ============================================================================= |
| MEDIUM | conf.yaml | 29 | # ============================================================================= |
| MEDIUM | conf.yaml | 92 | # ============================================================================= |
| MEDIUM | conf.yaml | 94 | # ============================================================================= |
| MEDIUM | conf.yaml | 231 | # ============================================================================= |
| MEDIUM | conf.yaml | 233 | # ============================================================================= |
| MEDIUM | conf.yaml | 334 | # ============================================================================= |
| MEDIUM | conf.yaml | 336 | # ============================================================================= |
| MEDIUM | conf.yaml | 370 | # ============================================================================= |
| MEDIUM | conf.yaml | 372 | # ============================================================================= |
| MEDIUM | tests/integration_test_client_side_tools.py | 16 | # ------------------------------ |
| MEDIUM | tests/integration_test_client_side_tools.py | 18 | # ------------------------------ |
| MEDIUM | tests/integration_test_client_side_tools.py | 47 | # ------------------------------ |
| MEDIUM | tests/integration_test_client_side_tools.py | 49 | # ------------------------------ |
| MEDIUM | tests/integration_test_client_side_tools.py | 58 | # ------------------------------ |
| MEDIUM | tests/integration_test_client_side_tools.py | 60 | # ------------------------------ |
| MEDIUM | tests/test_utils.py | 70 | # ----------------------------------------------------------------------- |
| MEDIUM | tests/test_utils.py | 77 | # ----------------------------------------------------------------------- |
| MEDIUM | tests/integration_test_send_message.py | 1089 | # ------------------------------ |
| MEDIUM | tests/integration_test_send_message.py | 1091 | # ------------------------------ |
| MEDIUM | tests/integration_test_send_message.py | 2579 | # ============================ |
| MEDIUM | tests/integration_test_send_message.py | 2581 | # ============================ |
| MEDIUM | tests/integration_test_send_message.py | 37 | # ------------------------------ |
| MEDIUM | tests/integration_test_send_message.py | 39 | # ------------------------------ |
| 444 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/test_multi_agent.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/conftest.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/integration_test_tool_execution_sandbox.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/integration_test_async_tool_sandbox.py | 0 | fixture to create and return the default organization. |
| HIGH | …/integration_test_typescript_tool_execution_sandbox.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_embeddings.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_agent_serialization_v2.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_letta_agent_batch.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/integration_test_token_counters.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/integration_test_modal.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_managers.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_managers.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_agent_serialization.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_agent_serialization.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_server_providers.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/managers/test_provider_manager.py | 0 | fixture to create and return the default organization. |
| HIGH | .github/scripts/model-sweep/conftest.py | 0 | fixture to create and return the default organization. |
| HIGH | tests/test_multi_agent.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/conftest.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/integration_test_tool_execution_sandbox.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/integration_test_async_tool_sandbox.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | …/integration_test_typescript_tool_execution_sandbox.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_embeddings.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_agent_serialization_v2.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_letta_agent_batch.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/integration_test_token_counters.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/integration_test_modal.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_managers.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_managers.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_managers.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_agent_serialization.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_agent_serialization.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/test_server_providers.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/managers/test_provider_manager.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | .github/scripts/model-sweep/conftest.py | 0 | fixture to create and return the default user within the default organization. |
| HIGH | tests/conftest.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_cancellation.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_async_tool_sandbox.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_send_message.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_override_model.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_multi_agent.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/test_long_running_agents.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_sleeptime_agent.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_send_message_v2.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/integration_test_mcp.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/sdk/conftest.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/sdk/mcp_servers_test.py | 0 | provides the url for the letta server. if letta_server_url is not set, starts the server in a background thread and poll |
| HIGH | tests/conftest.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_async_tool_sandbox.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_send_message.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_override_model.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_system_prompt_prefix_caching.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_multi_agent.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/test_long_running_agents.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_sleeptime_agent.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_builtin_tools.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/integration_test_mcp.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/sdk/conftest.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | tests/sdk/mcp_servers_test.py | 0 | creates and returns a synchronous letta rest client for testing. |
| HIGH | .github/scripts/model-sweep/conftest.py | 0 | creates and returns a synchronous letta rest client for testing. |
| 213 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/locust_test.py | 21 | # Create a user and get the token |
| MEDIUM | tests/test_modal_sandbox_v2.py | 140 | # Create a mock actor |
| MEDIUM | tests/test_modal_sandbox_v2.py | 182 | # Create a mock actor |
| MEDIUM | tests/test_modal_sandbox_v2.py | 242 | # Create a mock actor |
| MEDIUM | tests/test_modal_sandbox_v2.py | 287 | # Create a mock actor |
| MEDIUM | tests/test_modal_sandbox_v2.py | 463 | # Create a mock that has a remote attribute |
| MEDIUM | tests/test_openai_ws_session.py | 200 | # Create a concrete subclass just for testing |
| MEDIUM | tests/integration_test_turbopuffer.py | 1901 | # Create an archive |
| MEDIUM | tests/integration_test_turbopuffer.py | 214 | # Create a TPUF-enabled archive |
| MEDIUM | tests/integration_test_turbopuffer.py | 634 | # Create a unique archive ID for this test |
| MEDIUM | tests/integration_test_turbopuffer.py | 2172 | # Create a conversation |
| MEDIUM | tests/integration_test_client_side_tools.py | 222 | # Create the server-side tool |
| MEDIUM | tests/test_utils.py | 708 | # Create a dict that when serialized will exceed limit |
| MEDIUM | tests/test_secret.py | 198 | # Create a Secret from encrypted value |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 251 | # Create the SandboxConfigManager |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 261 | # Create the sandbox configuration |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 409 | # Create a tool that uses the injected client and agent_id to actually clear a memory block |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 456 | # Create the tool |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 479 | # Create the tool in the system |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 482 | # Create an agent with a memory block |
| MEDIUM | tests/integration_test_tool_execution_sandbox.py | 500 | # Create the sandbox for the tool |
| MEDIUM | tests/integration_test_async_tool_sandbox.py | 321 | # Create the SandboxConfigManager |
| MEDIUM | tests/integration_test_async_tool_sandbox.py | 331 | # Create the sandbox configuration |
| MEDIUM | tests/integration_test_async_tool_sandbox.py | 1246 | # Create the tool with proper schema |
| MEDIUM | tests/integration_test_async_tool_sandbox.py | 1282 | # Create the sandbox and verify client injection is detected |
| MEDIUM | tests/integration_test_async_tool_sandbox.py | 1343 | # Create the sandbox and verify client injection is detected |
| MEDIUM | tests/integration_test_send_message.py | 2385 | # # Create a streaming request |
| MEDIUM | tests/integration_test_override_model.py | 373 | # Create a conversation |
| MEDIUM | tests/integration_test_summarizer.py | 111 | # Create a realistic-looking tool return with repeated data |
| MEDIUM | tests/integration_test_summarizer.py | 1451 | # # Create an input message to trigger the agent |
| MEDIUM | tests/integration_test_summarizer.py | 1457 | # # Create a proper run record in the database |
| MEDIUM | tests/integration_test_summarizer.py | 1466 | # # Create the agent loop using LettaAgentV3 |
| MEDIUM | tests/integration_test_summarizer.py | 1485 | # # Create a mock response with the required structure |
| MEDIUM | tests/integration_test_summarizer.py | 1634 | # # Create an input message to trigger the agent |
| MEDIUM | tests/integration_test_summarizer.py | 1640 | # # Create a proper run record in the database |
| MEDIUM | tests/integration_test_summarizer.py | 1649 | # # Create the agent loop using LettaAgentV3 |
| MEDIUM | tests/integration_test_summarizer.py | 1666 | # # Create a mock response with the required structure |
| MEDIUM | tests/integration_test_summarizer.py | 333 | # Create a small conversation with ~5 messages |
| MEDIUM | tests/integration_test_summarizer.py | 396 | # Create a large tool return |
| MEDIUM | tests/integration_test_summarizer.py | 589 | # # Create an extremely large tool return (100k chars) |
| MEDIUM | tests/integration_test_summarizer.py | 694 | # Create a conversation with enough messages to trigger summarization |
| MEDIUM | tests/integration_test_summarizer.py | 792 | # Create a conversation with enough messages to summarize |
| MEDIUM | tests/integration_test_summarizer.py | 868 | # Create a conversation with enough messages to summarize |
| MEDIUM | tests/integration_test_summarizer.py | 1048 | # Create the V3 agent loop |
| MEDIUM | tests/integration_test_summarizer.py | 1127 | # Create a real summarizer config using the default factory |
| MEDIUM | tests/integration_test_summarizer.py | 1229 | # Create a real summarizer config using the default factory |
| MEDIUM | tests/integration_test_summarizer.py | 1343 | # # Create a run for the agent using RunManager |
| MEDIUM | tests/integration_test_summarizer.py | 1347 | # # Create the agent loop using LettaAgentV3 |
| MEDIUM | tests/integration_test_summarizer.py | 1387 | # # Create a new run for the repaired agent |
| MEDIUM | tests/integration_test_summarizer.py | 1391 | # # Create a new agent loop with the repaired agent state |
| MEDIUM | tests/integration_test_summarizer.py | 1789 | # Create a summarizer config with "all" mode |
| MEDIUM | tests/integration_test_summarizer.py | 1862 | # Create a summarizer config with "self" mode |
| MEDIUM | tests/integration_test_summarizer.py | 2232 | # Create a conversation with enough messages to summarize |
| MEDIUM | tests/test_sonnet_nonnative_reasoning_buffering.py | 153 | # Create the stream |
| MEDIUM | …/integration_test_typescript_tool_execution_sandbox.py | 292 | # Create a TypeScript tool that has 'agent_state' in its parameters |
| MEDIUM | …/integration_test_typescript_tool_execution_sandbox.py | 435 | # Create a tool that checks if the client variable exists |
| MEDIUM | …/integration_test_typescript_tool_execution_sandbox.py | 480 | # Create a tool that uses the 'lodash' npm package |
| MEDIUM | tests/test_agent_serialization_v2.py | 337 | # Create a mock MCP tool |
| MEDIUM | tests/test_internal_agents_count.py | 46 | # Create a simple AgentState-like object for tracking |
| MEDIUM | tests/test_letta_agent_batch.py | 432 | # Create the mock for results |
| 376 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | test_watchdog_hang.py | 88 | except Exception as e: |
| LOW | tests/integration_test_turbopuffer.py | 154 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 346 | except Exception as e: |
| LOW | tests/integration_test_turbopuffer.py | 350 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 1894 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 48 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 490 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 618 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 757 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 1141 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 1202 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 1265 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 1337 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 2398 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 2480 | except Exception: |
| LOW | tests/integration_test_turbopuffer.py | 2536 | except Exception: |
| LOW | tests/test_crypto_utils.py | 92 | except Exception as e: |
| LOW | tests/conftest.py | 79 | except Exception: |
| LOW | tests/conftest.py | 85 | except Exception: |
| LOW | tests/integration_test_tool_execution_sandbox.py | 452 | except Exception as e: |
| LOW | tests/integration_test_cancellation.py | 124 | except Exception: |
| LOW | tests/integration_test_async_tool_sandbox.py | 360 | except Exception as e: |
| LOW | tests/integration_test_async_tool_sandbox.py | 1242 | except Exception as e: |
| LOW | tests/integration_test_send_message.py | 373 | except Exception: |
| LOW | tests/integration_test_send_message.py | 511 | except Exception: |
| LOW | tests/integration_test_send_message.py | 667 | except Exception: |
| LOW | tests/integration_test_send_message.py | 703 | except Exception: |
| LOW | tests/integration_test_send_message.py | 859 | except Exception: |
| LOW | tests/integration_test_send_message.py | 1200 | except Exception as e: |
| LOW | tests/integration_test_send_message.py | 2026 | except Exception as e: |
| LOW | tests/integration_test_send_message.py | 2202 | except Exception as e: |
| LOW | tests/mcp_test.py | 216 | except Exception as e: |
| LOW | tests/mcp_test.py | 257 | except Exception as e: |
| LOW | tests/mcp_test.py | 277 | except Exception as e: |
| LOW | tests/integration_test_override_model.py | 117 | except Exception as e: |
| LOW | tests/integration_test_override_model.py | 141 | except Exception as e: |
| LOW | tests/test_sonnet_nonnative_reasoning_buffering.py | 87 | except Exception: |
| LOW | tests/test_sonnet_nonnative_reasoning_buffering.py | 213 | except Exception as e: |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 33 | except Exception: |
| LOW | tests/test_provider_trace_agents.py | 94 | except Exception: |
| LOW | tests/test_provider_trace_agents.py | 160 | except Exception: |
| LOW | tests/test_internal_agents_count.py | 59 | except Exception: |
| LOW | tests/integration_test_usage_tracking.py | 126 | except Exception as e: |
| LOW | tests/integration_test_human_in_the_loop.py | 381 | except Exception: |
| LOW | tests/integration_test_human_in_the_loop.py | 368 | except Exception: |
| LOW | tests/integration_test_human_in_the_loop.py | 508 | except Exception as e: |
| LOW | tests/integration_test_human_in_the_loop.py | 770 | except Exception as e: |
| LOW | tests/integration_test_human_in_the_loop.py | 1035 | except Exception as e: |
| LOW | tests/test_temporal_metrics_local.py | 115 | except Exception: |
| LOW | tests/integration_test_send_message_v2.py | 138 | except Exception: |
| LOW | tests/integration_test_send_message_v2.py | 209 | except Exception: |
| LOW | tests/integration_test_send_message_v2.py | 262 | except Exception: |
| LOW | tests/integration_test_chat_completions.py | 183 | except Exception as e: |
| LOW | tests/integration_test_modal.py | 428 | except Exception as e: |
| LOW | tests/test_managers.py | 11220 | except Exception: |
| LOW | tests/test_sources.py | 1599 | except Exception as e: |
| LOW | tests/test_tool_schema_parsing.py | 121 | except Exception as e: |
| LOW | tests/test_tool_schema_parsing.py | 194 | except Exception as e: |
| LOW | tests/test_tool_schema_parsing.py | 315 | except Exception as e: |
| LOW | tests/test_tool_schema_parsing.py | 676 | except Exception as e: |
| 745 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/conftest.py | 242 | Fetches the current weather for a given location. Args: location (str): The location to ge |
| HIGH | tests/test_letta_agent_batch.py | 56 | Fetches the current weather for a given location. Args: location: The location to get the |
| HIGH | tests/integration_test_chat_completions.py | 71 | Fetches the current weather for a given location. Args: location (str): The location to ge |
| HIGH | tests/performance_tests/test_agent_mass_update.py | 97 | Fetches the current weather for a given location. Parameters: location (str): The location |
| HIGH | .github/scripts/model-sweep/conftest.py | 68 | Fetches the current weather for a given location. Parameters: location (str): The location |
| HIGH | letta/local_llm/grammars/gbnf_grammar_generator.py | 518 | Generate GBNF Grammar from Pydantic Models. This method takes a list of Pydantic models and uses them to gener |
| HIGH | letta/server/rest_api/streaming_response.py | 161 | Wraps a stream generator to provide real-time run cancellation checking. This wrapper periodically checks for |
| HIGH | letta/schemas/message.py | 943 | Parse tool response JSON and extract message and status. Args: response_text: Raw JSON response tex |
| HIGH | letta/schemas/providers/chatgpt_oauth.py | 197 | Perform OAuth token refresh with OpenAI's token endpoint. Args: creds: Current credentials containi |
| HIGH | letta/functions/functions.py | 328 | Dynamically imports a function from a specified module. Args: module_name (str): The name of the modul |
| HIGH | letta/functions/functions.py | 354 | Dynamically loads a specific function from a module and generates its JSON schema. Args: module_name ( |
| HIGH | letta/functions/typescript_parser.py | 10 | Derives the OpenAI JSON schema for a given TypeScript function source code. This parser extracts the function signa |
| HIGH | letta/functions/async_composio_toolset.py | 44 | Execute an action asynchronously using the Composio API Args: action (str): The name of th |
| HIGH | letta/functions/schema_generator.py | 527 | Extracts the 'Examples:' section from a Google-style docstring. Args: docstring (Optional[str]): The full d |
| HIGH | letta/functions/ast_parsers.py | 56 | Resolve a type annotation string into a Python type. Previously, primitive support for int, float, str, dict, l |
| HIGH | letta/functions/ast_parsers.py | 91 | Parse the source code to extract annotations for a given function name. Args: source_code (str): The P |
| HIGH | letta/functions/function_sets/files.py | 11 | Open one or more files and load their contents into files section in core memory. Maximum of 5 files can be opened simul |
| HIGH | letta/functions/function_sets/builtin.py | 43 | Search the web using Exa's AI-powered search engine and retrieve relevant content. Examples: web_search("T |
| HIGH | letta/functions/function_sets/base.py | 23 | Memory management tool with various sub-commands for memory block operations. Args: command (str): The |
| HIGH | letta/functions/function_sets/base.py | 95 | Search prior conversation history using hybrid search (text + semantic similarity). Args: query (Optio |
| HIGH | letta/functions/function_sets/base.py | 165 | Add information to long-term archival memory for later retrieval. Use this tool to store facts, knowledge, or |
| HIGH | letta/functions/function_sets/base.py | 203 | Search archival memory using semantic similarity to find relevant information. This tool searches your long-te |
| HIGH | letta/functions/function_sets/base.py | 312 | The memory_replace command allows you to replace a specific string in a memory block with a new string. This is use |
| HIGH | letta/functions/function_sets/base.py | 392 | The memory_insert command allows you to insert text at a specific location in a memory block. Args: la |
| HIGH | letta/orm/sqlite_functions.py | 75 | Validates and transforms embeddings to ensure correct dimensionality. Args: embedding: Input embedding |
| HIGH | letta/orm/sqlalchemy_base.py | 441 | The primary accessor for an ORM record. Async version of read method. Args: db_session: the database |
| HIGH | letta/orm/sqlalchemy_base.py | 844 | Get the count of rows that match the provided filters. Args: db_session: SQLAlchemy session |
| HIGH | letta/llm_api/llm_client.py | 19 | Create an LLM client based on the model endpoint type. Args: provider: The model endpoint |
| HIGH | letta/llm_api/chatgpt_oauth_client.py | 106 | Get the ChatGPT OAuth provider and credentials with automatic refresh if needed. Args: llm_config: |
| HIGH | letta/llm_api/anthropic_client.py | 382 | Sends a batch request to the Anthropic API using the provided agent messages and tools mappings. Args: |
| HIGH | letta/helpers/tpuf_client.py | 803 | Generic query execution for Turbopuffer. Args: namespace_name: Turbopuffer namespace to query |
| HIGH | letta/helpers/message_helper.py | 16 | Async helper to fetch image from URL without blocking the event loop. Retries once on timeout to handle transie |
| HIGH | letta/helpers/crypto_utils.py | 105 | Encrypt a string using AES-256-GCM (synchronous version). WARNING: This performs CPU-intensive PBKDF2 |
| HIGH | letta/helpers/crypto_utils.py | 154 | Encrypt a string using AES-256-GCM (async version). Runs the CPU-intensive PBKDF2 key derivation in a |
| HIGH | letta/helpers/crypto_utils.py | 203 | Decrypt a string that was encrypted using AES-256-GCM (synchronous version). WARNING: This performs CP |
| HIGH | letta/helpers/crypto_utils.py | 254 | Decrypt a string that was encrypted using AES-256-GCM (async version). Runs the CPU-intensive PBKDF2 k |
| HIGH | letta/services/provider_manager.py | 970 | Get an LLMConfig from a model handle. Args: handle: The model handle to look up actor: |
| HIGH | letta/services/provider_manager.py | 1097 | Get an EmbeddingConfig from a model handle. Args: handle: The model handle to look up a |
| HIGH | letta/services/agent_generate_completion_manager.py | 77 | Generate a completion directly from the LLM provider using the agent's configuration. This method make |
| HIGH | letta/services/tool_manager.py | 472 | Bulk create or update multiple tools in a single database transaction. Uses optimized PostgreSQL bulk |
| HIGH | letta/services/tool_manager.py | 1397 | Search tools using Turbopuffer semantic search. Args: actor: User performing the search |
| HIGH | letta/services/block_manager.py | 800 | Bulk-update the `value` field for multiple blocks in one transaction. Args: updates: mappi |
| HIGH | letta/services/archive_manager.py | 293 | Create a passage in an archive. Args: archive_id: ID of the archive to add the passage to |
| HIGH | letta/services/archive_manager.py | 383 | Create multiple passages in an archive. Args: archive_id: ID of the archive to add the passages to |
| HIGH | letta/services/job_manager.py | 329 | Get messages associated with a job using cursor-based pagination. This is a wrapper around get_job_mess |
| HIGH | letta/services/job_manager.py | 387 | Get steps associated with a job using cursor-based pagination. This is a wrapper around get_job_message |
| HIGH | letta/services/job_manager.py | 434 | Verify that a job exists and the user has the required access. Args: session: The database |
| HIGH | letta/services/job_manager.py | 553 | Get all steps associated with a job. Args: job_id: The ID of the job to get steps for |
| HIGH | letta/services/agent_serialization_manager.py | 383 | Export agents and their related entities to AgentFileSchema format. Args: agent_ids: List |
| HIGH | letta/services/agent_serialization_manager.py | 509 | Import AgentFileSchema into the database. Args: schema: The agent file schema to import |
| HIGH | letta/services/agent_manager.py | 1975 | Lists all sources attached to an agent with pagination. Args: agent_id: ID of the agent to |
| HIGH | letta/services/agent_manager.py | 2758 | Attaches a tool to an agent. Args: agent_id: ID of the agent to attach the tool to. |
| HIGH | letta/services/agent_manager.py | 2901 | Attaches missing core file tools to an agent. Args: agent_state: The current agent state w |
| HIGH | letta/services/agent_manager.py | 2962 | Detach all core file tools from an agent. Args: agent_state: The current agent state with |
| HIGH | letta/services/message_manager.py | 910 | Most performant query to list messages by directly querying the Message table. This function filters b |
| HIGH | letta/services/message_manager.py | 1276 | Search messages across entire organization using Turbopuffer. Args: actor: User performing |
| HIGH | letta/services/step_manager.py | 286 | Update the transaction ID for a step. Args: actor: The user making the request step_id: |
| HIGH | letta/services/step_manager.py | 340 | Update the stop reason for a step. Args: actor: The user making the request step_id: Th |
| HIGH | letta/services/step_manager.py | 378 | Update a step with error information. Args: actor: The user making the request step_id: |
| HIGH | letta/services/step_manager.py | 426 | Update a step with success status and final usage statistics. Args: actor: The user making the requ |
| 22 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_modal_sandbox_v2.py | 450 | |
| LOW | tests/conftest.py | 24 | |
| LOW | tests/conftest.py | 70 | |
| LOW | tests/integration_test_cancellation.py | 91 | |
| LOW | tests/integration_test_async_tool_sandbox.py | 68 | |
| LOW | tests/integration_test_send_message.py | 215 | |
| LOW | tests/integration_test_send_message.py | 786 | |
| LOW | tests/integration_test_send_message.py | 895 | |
| LOW | tests/integration_test_send_message.py | 983 | |
| LOW | tests/integration_test_send_message.py | 1009 | |
| LOW | tests/integration_test_send_message.py | 984 | |
| LOW | tests/mcp_test.py | 240 | |
| LOW | tests/mcp_test.py | 260 | |
| LOW | tests/mcp_test.py | 280 | |
| LOW | tests/integration_test_override_model.py | 43 | |
| LOW | tests/test_sonnet_nonnative_reasoning_buffering.py | 134 | |
| LOW | tests/integration_test_agent_tool_graph.py | 501 | |
| LOW | tests/test_letta_agent_batch.py | 362 | |
| LOW | tests/test_letta_agent_batch.py | 448 | |
| LOW | tests/test_letta_agent_batch.py | 615 | |
| LOW | tests/test_letta_agent_batch.py | 781 | |
| LOW | tests/integration_test_multi_agent.py | 18 | |
| LOW | tests/integration_test_multi_agent.py | 135 | |
| LOW | tests/integration_test_multi_agent.py | 210 | |
| LOW | tests/integration_test_multi_agent.py | 325 | |
| LOW | tests/test_sdk_client.py | 1069 | |
| LOW | tests/test_sdk_client.py | 1154 | |
| LOW | tests/test_sdk_client.py | 1899 | |
| LOW | tests/test_sdk_client.py | 2164 | |
| LOW | tests/test_long_running_agents.py | 18 | |
| LOW | tests/integration_test_human_in_the_loop.py | 1175 | |
| LOW | tests/test_file_processor.py | 226 | |
| LOW | tests/integration_test_sleeptime_agent.py | 16 | |
| LOW | tests/integration_test_send_message_v2.py | 283 | |
| LOW | tests/integration_test_send_message_v2.py | 528 | |
| LOW | tests/test_managers.py | 5081 | |
| LOW | tests/test_tool_schema_parsing.py | 202 | |
| LOW | tests/test_agent_serialization.py | 39 | |
| LOW | tests/test_agent_serialization.py | 268 | |
| LOW | tests/test_agent_serialization.py | 486 | |
| LOW | tests/integration_test_modal_sandbox_v2.py | 632 | |
| LOW | tests/integration_test_builtin_tools.py | 24 | |
| LOW | tests/integration_test_builtin_tools.py | 161 | |
| LOW | tests/integration_test_clickhouse_llm_traces.py | 180 | |
| LOW | tests/integration_test_mcp.py | 27 | |
| LOW | tests/test_prompt_caching.py | 605 | |
| LOW | tests/test_prompt_caching.py | 697 | |
| LOW | tests/test_prompt_caching.py | 974 | |
| LOW | tests/performance_tests/test_agent_mass_creation.py | 253 | |
| LOW | tests/managers/test_cancellation.py | 1143 | |
| LOW | tests/managers/test_agent_manager.py | 1876 | |
| LOW | tests/managers/test_agent_manager.py | 1990 | |
| LOW | tests/managers/test_mcp_manager.py | 238 | |
| LOW | tests/managers/test_tool_manager.py | 1207 | |
| LOW | tests/sdk/conftest.py | 13 | |
| LOW | tests/sdk/conftest.py | 64 | |
| LOW | tests/sdk/conftest.py | 111 | |
| LOW | tests/sdk/conftest.py | 151 | |
| LOW | tests/sdk/mcp_servers_test.py | 31 | |
| LOW | tests/sdk/search_test.py | 294 | |
| 389 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/integration_test_turbopuffer.py | 150 | # Check if our message ID is in the results |
| LOW | tests/integration_test_turbopuffer.py | 64 | # Set environment to DEV for testing |
| LOW | tests/conftest.py | 187 | # Set environment to DEV for testing |
| LOW | tests/integration_test_send_message.py | 378 | # Check if next message is LettaStopReason to detect this case |
| LOW | tests/integration_test_send_message.py | 831 | # Check if there are tool calls in the response |
| LOW | tests/integration_test_send_message.py | 905 | # Check if chunks are raw SSE strings (from background streaming) |
| LOW | tests/integration_test_summarizer.py | 1567 | # # Check if content has system_alert type with the summary message (object form) |
| LOW | tests/integration_test_summarizer.py | 1745 | # # Check if content has system_alert type with the summary message (object form) |
| LOW | tests/test_sonnet_nonnative_reasoning_buffering.py | 200 | # Check if this is inner thoughts |
| LOW | tests/test_sonnet_nonnative_reasoning_buffering.py | 251 | # Check if we detected large bursts |
| LOW | tests/test_sdk_client.py | 631 | # Check if modify method exists |
| LOW | tests/test_temporal_metrics_local.py | 109 | # Check if DogStatsD is listening |
| LOW | tests/integration_test_send_message_v2.py | 752 | # Check if tool calls are grouped in a single message (parallel) or separate messages (sequential) |
| LOW | tests/integration_test_send_message_v2.py | 777 | # Check if we have true parallel tool calling |
| LOW | tests/integration_test_send_message_v2.py | 780 | # Check if the single message contains multiple tool calls |
| LOW | tests/test_tool_schema_parsing.py | 150 | # Check if we expect the conversion to fail |
| LOW | tests/integration_test_multi_modal_tool_returns.py | 398 | # Check if this is a tool return message that might contain our image |
| LOW | tests/test_server_providers.py | 2383 | # Check if provider already exists |
| LOW | tests/test_server_providers.py | 2633 | # Set last_synced to indicate models are already synced |
| LOW | tests/test_prompt_caching.py | 827 | # Check if ANY of the follow-up messages had a cache hit |
| LOW | tests/test_prompt_caching.py | 961 | # Check if ANY of the follow-up messages had a cache hit |
| LOW | tests/managers/test_cancellation.py | 1280 | # Check if message has tool_returns (new format) or tool_return (old format) |
| LOW | tests/managers/test_agent_manager.py | 2008 | # Check if expected type is in the union |
| LOW | otel/start-otel-collector.sh | 92 | # Check if update is needed |
| LOW | sandbox/node_server.py | 66 | # Check if there was an error |
| LOW | .github/scripts/model-sweep/conftest.py | 166 | # Check if already running |
| LOW | …d06594144ef3_add_and_migrate_encrypted_columns_for_.py | 37 | # Check if encryption key is available |
| LOW | …rsions/8149a781ac1b_backfill_encrypted_columns_for_.py | 27 | # Check if encryption key is available |
| LOW | …c/versions/74e860718e0d_add_archival_memory_sharing.py | 57 | # Check if archives table already exists |
| LOW | …/versions/eff256d296cb_mcp_encrypted_data_migration.py | 30 | # Check if encryption key is available |
| LOW | letta/streaming_utils.py | 287 | # Check if this same chunk also contains the terminating quote (and optional delimiter) |
| LOW | letta/utils.py | 1167 | # Check if coro is an async generator instead of a coroutine |
| LOW | letta/agent.py | 553 | # Check if inner thoughts is in the function call arguments (possible apparently if you are using Azure) |
| LOW | letta/agent.py | 1217 | # Check if there's a summary message in the message queue |
| LOW | letta/agent.py | 1350 | # Check if there's a summary message in the message queue |
| LOW | letta/agent.py | 1488 | # Check if there's a summary message in the message queue |
| LOW | letta/local_llm/function_parser.py | 46 | # Check if it's a user message or system message |
| LOW | letta/local_llm/utils.py | 50 | # Check if the file exists |
| LOW | letta/local_llm/settings/settings.py | 29 | # Check if settings_dir folder exists (if not, create it) |
| LOW | letta/local_llm/grammars/gbnf_grammar_generator.py | 473 | # Check if the field is optional (not required) |
| LOW | letta/local_llm/grammars/gbnf_grammar_generator.py | 85 | if not parts: # Check if the list is empty |
| LOW | letta/agents/letta_agent_v3.py | 289 | # Check if we should use SGLang native adapter for multi-turn RL training. |
| LOW | letta/agents/letta_agent_v3.py | 358 | # Check if step was cancelled - break out of the step loop |
| LOW | letta/agents/letta_agent_v3.py | 424 | # Set context_tokens to expose actual context window usage (vs accumulated prompt_tokens) |
| LOW | letta/agents/letta_agent_v3.py | 502 | # Check if we should use SGLang native adapter for multi-turn RL training |
| LOW | letta/agents/letta_agent_v3.py | 615 | # Check if step was cancelled - break out of the step loop |
| LOW | letta/agents/letta_agent_v3.py | 696 | # Set context_tokens to expose actual context window usage (vs accumulated prompt_tokens) |
| LOW | letta/agents/letta_agent_v3.py | 1184 | # Check if there's a fallback route for the current model |
| LOW | letta/agents/letta_agent_v3.py | 1625 | # Check if there are required-before-exit tools that haven't been called |
| LOW | letta/agents/letta_agent_v3.py | 1999 | # Check if the LLM hit max_tokens (finish_reason == "length") |
| LOW | letta/server/server.py | 1812 | # Check if the server name is already in the config |
| LOW | letta/server/server.py | 1883 | # Check if the server name is already in the config |
| LOW | letta/server/startup.sh | 23 | # Check if we're configured for external Redis |
| LOW | letta/server/startup.sh | 38 | # Check if we're configured for external Postgres |
| LOW | letta/server/ws_api/server.py | 110 | # Check if a port argument is provided |
| LOW | letta/server/ws_api/interface.py | 37 | if self.clients: # Check if there are any clients connected |
| LOW | letta/server/rest_api/streaming_response.py | 132 | # Check if there's anything left |
| LOW | letta/server/rest_api/proxy_helpers.py | 319 | # Set max_tokens to budget_tokens + reasonable buffer for response |
| LOW | letta/server/rest_api/proxy_helpers.py | 28 | # Check if entire message is a policy spec (starts with tag) |
| LOW | letta/server/rest_api/proxy_helpers.py | 33 | # Check if policy spec is appended (with prefix) |
| 145 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_openai_ws_session.py | 5 | |
| LOW | tests/integration_test_tool_execution_sandbox.py | 13 | |
| LOW | tests/integration_test_async_tool_sandbox.py | 18 | |
| LOW | tests/integration_test_async_tool_sandbox.py | 383 | |
| LOW | tests/integration_test_send_message.py | 32 | |
| LOW | tests/integration_test_modal.py | 14 | |
| LOW | …sions/b888f21b151f_add_vector_db_provider_to_source.py | 26 | |
| LOW | …sions/b888f21b151f_add_vector_db_provider_to_source.py | 26 | |
| LOW | letta/__init__.py | 25 | |
| LOW | letta/__init__.py | 26 | |
| LOW | letta/__init__.py | 27 | |
| LOW | letta/__init__.py | 28 | |
| LOW | letta/__init__.py | 29 | |
| LOW | letta/__init__.py | 30 | |
| LOW | letta/__init__.py | 31 | |
| LOW | letta/__init__.py | 31 | |
| LOW | letta/__init__.py | 31 | |
| LOW | letta/__init__.py | 32 | |
| LOW | letta/__init__.py | 33 | |
| LOW | letta/__init__.py | 34 | |
| LOW | letta/__init__.py | 34 | |
| LOW | letta/__init__.py | 34 | |
| LOW | letta/__init__.py | 34 | |
| LOW | letta/__init__.py | 34 | |
| LOW | letta/__init__.py | 41 | |
| LOW | letta/__init__.py | 42 | |
| LOW | letta/__init__.py | 43 | |
| LOW | letta/__init__.py | 44 | |
| LOW | letta/__init__.py | 45 | |
| LOW | letta/__init__.py | 46 | |
| LOW | letta/__init__.py | 47 | |
| LOW | letta/__init__.py | 19 | |
| LOW | letta/errors.py | 7 | |
| LOW | letta/errors.py | 8 | |
| LOW | letta/serialize_schemas/__init__.py | 1 | |
| LOW | letta/agents/base_agent.py | 18 | |
| LOW | letta/agents/agent_loop.py | 12 | |
| LOW | letta/agents/letta_agent.py | 9 | |
| LOW | letta/agents/letta_agent.py | 51 | |
| LOW | letta/agents/base_agent_v2.py | 14 | |
| LOW | letta/agents/base_agent_v2.py | 14 | |
| LOW | letta/agents/base_agent_v2.py | 15 | |
| LOW | letta/agents/voice_sleeptime_agent.py | 4 | |
| LOW | letta/agents/letta_agent_v3.py | 73 | |
| LOW | letta/server/rest_api/dependencies.py | 13 | |
| LOW | letta/server/rest_api/routers/v1/tags.py | 8 | |
| LOW | letta/server/rest_api/routers/v1/internal_agents.py | 5 | |
| LOW | letta/server/rest_api/routers/v1/users.py | 11 | |
| LOW | letta/server/rest_api/routers/v1/git_http.py | 20 | |
| LOW | letta/server/rest_api/routers/v1/internal_runs.py | 10 | |
| LOW | letta/server/rest_api/routers/v1/archives.py | 12 | |
| LOW | letta/server/rest_api/routers/v1/identities.py | 20 | |
| LOW | letta/server/rest_api/routers/v1/agents.py | 52 | |
| LOW | letta/server/rest_api/routers/v1/voice.py | 9 | |
| LOW | letta/server/rest_api/routers/v1/jobs.py | 9 | |
| LOW | letta/server/rest_api/routers/v1/providers.py | 12 | |
| LOW | letta/server/rest_api/routers/v1/organizations.py | 9 | |
| LOW | letta/server/rest_api/routers/v1/llms.py | 10 | |
| LOW | letta/server/rest_api/routers/v1/internal_templates.py | 10 | |
| LOW | letta/server/rest_api/routers/v1/runs.py | 24 | |
| 260 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/integration_test_client_side_tools.py | 92 | # Step 1: User asks for the secret code - agent should call the tool |
| LOW | tests/integration_test_client_side_tools.py | 109 | # Step 2: Provide the tool return (simulating client-side execution) |
| LOW | tests/integration_test_client_side_tools.py | 152 | # Step 3: Ask the agent what the secret code was (testing memory/context) |
| LOW | tests/integration_test_client_side_tools.py | 173 | # Step 4: Validate the full conversation history makes sense |
| LOW | tests/integration_test_client_side_tools.py | 242 | # Step 1: Call the tool WITH client_tools specified - should pause for approval |
| LOW | tests/integration_test_client_side_tools.py | 261 | # Step 2: Provide client-side tool return |
| LOW | tests/integration_test_client_side_tools.py | 286 | # Step 3: Verify the client value was used, not the server value |
| LOW | tests/integration_test_client_side_tools.py | 306 | # Step 4: Test that WITHOUT client_tools, server tool executes directly |
| LOW | tests/integration_test_client_side_tools.py | 354 | # Step 1: Trigger the client-side tool call |
| LOW | tests/integration_test_client_side_tools.py | 366 | # Step 2: Provide an error response |
| LOW | tests/test_mcp_encryption.py | 251 | # Step 1: Create OAuth session (without tokens initially) |
| LOW | tests/test_mcp_encryption.py | 264 | # Step 2: Update session with tokens (simulating OAuth callback) |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 156 | # Step 1: Get initial context window |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 161 | # Step 2: Get the human block |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 170 | # Step 3: Update block via agent-specific endpoint (triggers recompilation) |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 179 | # Step 4: Verify the block was updated |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 183 | # Step 5: Get context window and verify core memory was recompiled |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 192 | # Step 6: System prompt template should NOT change (only memory content changes) |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 205 | # Step 1: Get initial system prompt |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 209 | # Step 2: Manually update a block via the API |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 58 | # Step 1: Get initial context window, system prompt, and human block value |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 72 | # Step 2: Tell the agent to update its memory using the memory tool |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 84 | # Step 3: Verify block was modified but system prompt hasn't changed |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 97 | # Step 4: Send another message to the agent |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 109 | # Step 5: Verify system prompt still hasn't changed |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 114 | # Step 6: Manually update a block via the API |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 129 | # Step 7: Send another message and verify system prompt still hasn't changed |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 224 | # Step 3: Reset messages (this should trigger system prompt rebuild) |
| LOW | tests/integration_test_system_prompt_prefix_caching.py | 227 | # Step 4: Verify system prompt HAS changed and includes the new memory |
| LOW | tests/test_sdk_client.py | 380 | # Step 1: Add multiple tags to the agent |
| LOW | tests/test_sdk_client.py | 386 | # Step 2: Retrieve tags for the agent and verify they match the added tags |
| LOW | tests/test_sdk_client.py | 392 | # Step 3: Retrieve agents by each tag to ensure the agent is associated correctly |
| LOW | tests/test_sdk_client.py | 397 | # Step 4: Delete a specific tag from the agent and verify its removal |
| LOW | tests/test_sdk_client.py | 406 | # Step 5: Delete all remaining tags from the agent |
| LOW | tests/test_sdk_client.py | 367 | # Step 0: create an agent with no tags |
| LOW | tests/integration_test_human_in_the_loop.py | 1395 | # Step 4: Accumulate remaining chunks (already collected above) |
| LOW | tests/integration_test_human_in_the_loop.py | 1397 | # Step 5: Verify we got chunks AND a cancelled stop reason |
| LOW | tests/integration_test_human_in_the_loop.py | 1405 | # Step 6: Verify run status is cancelled |
| LOW | tests/integration_test_human_in_the_loop.py | 1412 | # Step 7: Verify that approval response message is persisted |
| LOW | tests/integration_test_human_in_the_loop.py | 1418 | # Step 8: Attempt retry with same response |
| LOW | tests/integration_test_human_in_the_loop.py | 1438 | # Step 9: Accumulate chunks |
| LOW | tests/integration_test_human_in_the_loop.py | 1441 | # Step 10: Verify we got chunks AND an end_turn stop reason |
| LOW | tests/integration_test_human_in_the_loop.py | 1449 | # Step 11: Verify keep-alive message was sent |
| LOW | tests/integration_test_human_in_the_loop.py | 1515 | # Step 4: Verify we got cancelled |
| LOW | tests/integration_test_human_in_the_loop.py | 1520 | # Step 6: Verify tool return message is persisted |
| LOW | tests/integration_test_human_in_the_loop.py | 1525 | # Step 7: Call compact with mode='all' to evict all messages from context |
| LOW | tests/integration_test_human_in_the_loop.py | 1531 | # Step 8: Verify only system and summary messages remain in context (should be 2) |
| LOW | tests/integration_test_human_in_the_loop.py | 1538 | # Step 9: Retry the original approval response - should succeed via idempotency check |
| LOW | tests/integration_test_human_in_the_loop.py | 1351 | # Step 1: Send message that triggers approval request |
| LOW | tests/integration_test_human_in_the_loop.py | 1358 | # Step 2: Start approval stream and wait for first chunk (sentinel approach) |
| LOW | tests/integration_test_human_in_the_loop.py | 1379 | # Step 3: Wait for first chunk before triggering cancellation |
| LOW | tests/integration_test_human_in_the_loop.py | 1471 | # Step 1: Send message that triggers approval request |
| LOW | tests/integration_test_human_in_the_loop.py | 1478 | # Step 2: Start approval stream and wait for first chunk (sentinel approach) |
| LOW | tests/integration_test_human_in_the_loop.py | 1499 | # Step 3: Wait for first chunk before triggering cancellation |
| LOW | tests/integration_test_human_in_the_loop.py | 1558 | # Step 10: Accumulate chunks |
| LOW | tests/integration_test_human_in_the_loop.py | 1561 | # Step 11: Verify we got chunks AND an end_turn stop reason (not an error) |
| LOW | tests/test_managers.py | 6569 | # Step 1: Create block |
| LOW | tests/test_managers.py | 6575 | # Step 2: Update to v2, checkpoint => seq=2 |
| LOW | tests/test_managers.py | 6581 | # Step 3: Update to v3, checkpoint => seq=3 |
| LOW | tests/test_managers.py | 6732 | # Step 1: create initial block => seq=1 |
| 68 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | conf.yaml | 1 | # Letta Configuration File |
| LOW | conf.yaml | 161 | # Letta Client (LETTA_DEFAULT_*) |
| LOW | conf.yaml | 281 | # api_key: "" |
| LOW | conf.yaml | 301 | |
| LOW | conf.yaml | 321 | # sglang: |
| LOW | conf.yaml | 341 | # sandbox_template_id: "" |
| LOW | conf.yaml | 361 | |
| LOW | conf.yaml | 381 | # health_metrics_enabled: false |
| LOW | conf.yaml | 401 | # |
| LOW | alembic.ini | 1 | # A generic, single database configuration. |
| LOW | alembic.ini | 21 | # Any required deps can installed by adding `alembic[tz]` to the pip requirements |
| LOW | alembic.ini | 41 | # The path separator used here should be the separator specified by "version_path_separator" below. |
| LOW | alembic.ini | 61 | # output_encoding = utf-8 |
| LOW | tests/locust_test.py | 81 | # response = requests.post(f"{self.base_url}/api/agents/{agent_id}/messages", json=request.model_dump(), head |
| LOW | tests/locust_test.py | 101 | # try: |
| LOW | tests/test_crypto_utils.py | 421 | This simulates the real-world scenario of existing encrypted values |
| LOW | tests/integration_test_async_tool_sandbox.py | 41 | |
| LOW | tests/integration_test_send_message.py | 1901 | assert_greeting_with_assistant_message_response(messages_from_db, model_handle, model_settings, from_db=True) |
| LOW | tests/integration_test_send_message.py | 1921 | # client.agents.update(agent_id=agent_state.id, model=model_handle, model_settings=model_settings) |
| LOW | tests/integration_test_send_message.py | 2281 | # # ids=[c.model for c in TESTED_LLM_CONFIGS], |
| LOW | tests/integration_test_send_message.py | 2301 | # # Verify the job was created |
| LOW | tests/integration_test_send_message.py | 2321 | # def test_job_cancellation_endpoint_validation( |
| LOW | tests/integration_test_send_message.py | 2341 | # disable_e2b_api_key: Any, |
| LOW | tests/integration_test_send_message.py | 2361 | # # Try to cancel the completed job - should fail |
| LOW | tests/integration_test_send_message.py | 2381 | # This verifies that jobs continue even if the client "disconnects" (simulated by not consuming the stream). |
| LOW | tests/integration_test_send_message.py | 2401 | # ) |
| LOW | tests/integration_test_send_message.py | 2561 | |
| LOW | tests/integration_test_summarizer.py | 41 | |
| LOW | tests/integration_test_summarizer.py | 581 | # TESTED_LLM_CONFIGS, |
| LOW | tests/integration_test_summarizer.py | 601 | # content=[ |
| LOW | tests/integration_test_summarizer.py | 621 | # ], |
| LOW | tests/integration_test_summarizer.py | 641 | # # Find tool return messages in the result and verify truncation occurred |
| LOW | tests/integration_test_summarizer.py | 1301 | ) |
| LOW | tests/integration_test_summarizer.py | 1321 | # """ |
| LOW | tests/integration_test_summarizer.py | 1341 | # agent_state = await server.agent_manager.create_agent_async(agent_create, actor=actor) |
| LOW | tests/integration_test_summarizer.py | 1361 | # ) |
| LOW | tests/integration_test_summarizer.py | 1381 | # # Reload agent state after repairs |
| LOW | tests/integration_test_summarizer.py | 1401 | # # Verify we got a valid response after repair |
| LOW | tests/integration_test_summarizer.py | 1421 | # from unittest.mock import patch |
| LOW | tests/integration_test_summarizer.py | 1441 | # messages.append( |
| LOW | tests/integration_test_summarizer.py | 1461 | # id=test_run_id, |
| LOW | tests/integration_test_summarizer.py | 1481 | # from unittest.mock import MagicMock |
| LOW | tests/integration_test_summarizer.py | 1501 | # response=mock_response, |
| LOW | tests/integration_test_summarizer.py | 1521 | # stream_tokens=True, |
| LOW | tests/integration_test_summarizer.py | 1541 | # # Verify a summary message exists with the correct format |
| LOW | tests/integration_test_summarizer.py | 1561 | # if "prior messages" in text_to_check and "hidden" in text_to_check and "summary of the previous" in |
| LOW | tests/integration_test_summarizer.py | 1581 | # # Verify we attempted multiple invocations (the failing one + retry after summarization) |
| LOW | tests/integration_test_summarizer.py | 1601 | # Note: This test only runs with OpenAI since it uses OpenAI-specific error handling. |
| LOW | tests/integration_test_summarizer.py | 1621 | # content=[TextContent(type="text", text=f"User message {i}: This is test message number {i}.")], |
| LOW | tests/integration_test_summarizer.py | 1641 | # run_manager = RunManager() |
| LOW | tests/integration_test_summarizer.py | 1661 | # if call_count == 1: |
| LOW | tests/integration_test_summarizer.py | 1681 | # message="This model's maximum context length is 8000 tokens. However, your messages resulted in 12000 t |
| LOW | tests/integration_test_summarizer.py | 1701 | # run_id=test_run_id, |
| LOW | tests/integration_test_summarizer.py | 1721 | # # "prior messages ... have been hidden" and "summary of the previous" |
| LOW | tests/integration_test_summarizer.py | 1741 | # summary_message_text = parsed.get("message") |
| LOW | tests/test_providers.py | 261 | assert len(embedding_models) == 0 # embedding models currently not supported by SGLang |
| LOW | tests/integration_test_agent_tool_graph.py | 861 | # Check order |
| LOW | tests/integration_test_agent_tool_graph.py | 881 | # -- flip_coin |
| LOW | tests/integration_test_agent_tool_graph.py | 901 | # child_output_mapping={ |
| LOW | tests/integration_test_agent_tool_graph.py | 921 | # found_secret_word = False |
| 101 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/integration_test_summarizer.py | 1307 | ### in order to leverage caching (for self compaction) |
| MEDIUM | tests/test_agent_serialization_v2.py | 772 | """Test file export functionality with comprehensive validation""" |
| MEDIUM | tests/integration_test_usage_tracking.py | 449 | # Use Anthropic Sonnet 4.5 for this test as it has the most comprehensive caching |
| MEDIUM | tests/test_managers.py | 1279 | # Create an agent using the comprehensive fixture. |
| MEDIUM | tests/test_managers.py | 1297 | # Create an agent using the comprehensive fixture. |
| MEDIUM | tests/test_managers.py | 3612 | """Test comprehensive tag functionality for passages.""" |
| MEDIUM | tests/managers/conftest.py | 364 | """Create a comprehensive test agent with all features.""" |
| MEDIUM | tests/managers/test_passage_manager.py | 815 | """Test comprehensive tag functionality for passages.""" |
| MEDIUM | tests/managers/test_agent_manager.py | 1210 | # Create an agent using the comprehensive fixture. |
| MEDIUM | tests/managers/test_agent_manager.py | 1228 | # Create an agent using the comprehensive fixture. |
| MEDIUM | …empty_archival/agent_state/2024-01-11_12_44_32_PM.json | 1 | {"model": "gpt-4", "system": "You are Letta, the latest version of Limnal Corporation's digital companion, developed in |
| MEDIUM | …empty_archival/agent_state/2024-01-11_12_44_33_PM.json | 1 | {"model": "gpt-4", "system": "You are Letta, the latest version of Limnal Corporation's digital companion, developed in |
| MEDIUM | …nt_test_attach/agent_state/2024-01-11_12_42_19_PM.json | 1 | {"model": "gpt-4", "system": "You are Letta, the latest version of Limnal Corporation's digital companion, developed in |
| MEDIUM | …nt_test_attach/agent_state/2024-01-11_12_42_17_PM.json | 1 | {"model": "gpt-4", "system": "You are Letta, the latest version of Limnal Corporation's digital companion, developed in |
| MEDIUM | …nts/agent_test/agent_state/2024-01-11_12_43_59_PM.json | 1 | {"model": "gpt-4", "system": "You are Letta, the latest version of Limnal Corporation's digital companion, developed in |
| MEDIUM | …nts/agent_test/agent_state/2024-01-11_12_43_57_PM.json | 1 | {"model": "gpt-4", "system": "You are Letta, the latest version of Limnal Corporation's digital companion, developed in |
| MEDIUM | letta/streaming_utils.py | 268 | # Not in message yet: accumulate until we see '<json_key>': (robust to split fragments) |
| MEDIUM | letta/agent.py | 1740 | # If it exists in the input message, elevate it to the 'message' level |
| LOW | letta/agent.py | 950 | # Fallback if for some reason context_window is missing, just set to the default |
| LOW | letta/agent.py | 1134 | # Fallback if for some reason context_window is missing, just set to the default |
| MEDIUM | letta/agent.py | 314 | """Get response from LLM API with robust retry mechanism.""" |
| LOW | letta/serialize_schemas/marshmallow_agent.py | 117 | # no user messages, just return system message |
| LOW | letta/serialize_schemas/marshmallow_agent.py | 152 | # no user messages, just return system message |
| MEDIUM | letta/agents/letta_agent_v3.py | 1238 | # NOTE: we no longer refresh the system prompt before compaction so we can leverage cach |
| MEDIUM | letta/agents/letta_agent_v3.py | 1461 | # NOTE: we no longer refresh the system prompt before compaction so we can leverage cache for self m |
| MEDIUM | letta/server/rest_api/interface.py | 307 | # To make streamed arguments robust, we add a JSON-aware incremental |
| LOW | letta/server/rest_api/interface.py | 1120 | # Example where we just pass through the raw stream from the underlying OpenAI SSE stream |
| LOW | letta/server/rest_api/auth_token.py | 15 | # user is admin so we just return the default uuid |
| LOW | letta/server/rest_api/routers/v1/tools.py | 557 | # TODO: don't do this in the future (just return MCPServer) |
| LOW | letta/server/rest_api/routers/v1/tools.py | 612 | # TODO: don't do this in the future (just return MCPServer) |
| LOW | letta/schemas/sandbox_config.py | 45 | # If `data` is not a dict (e.g., it's another Pydantic model), just return it |
| LOW | letta/schemas/sandbox_config.py | 73 | # If `data` is not a dict (e.g., it's another Pydantic model), just return it |
| LOW | letta/schemas/message.py | 641 | # TODO remove the cast and just return the native type |
| LOW | letta/schemas/message.py | 728 | # If assistant mode is off, just create one ToolCallMessage with all tool calls |
| LOW | letta/schemas/providers/anthropic.py | 138 | # just use a cheap model to count some tokens - as of 5/7/2025 this is faster than fetching the list of mode |
| LOW | letta/schemas/providers/base.py | 96 | # Simplified asyncio handling - just use asyncio.run() |
| LOW | letta/schemas/providers/base.py | 120 | # Simplified asyncio handling - just use asyncio.run() |
| LOW | letta/functions/typescript_parser.py | 180 | # Handle union types (simplified - just use string) |
| LOW | letta/functions/mcp_client/types.py | 94 | # If the result still contains unreplaced templates, just return original value |
| MEDIUM | letta/orm/sqlalchemy_base.py | 278 | # TODO (cliandy): can make this more robust down the line |
| MEDIUM | letta/llm_api/openai_client.py | 574 | # don't raise error since this isn't robust against edge cases |
| LOW | letta/llm_api/openai_client.py | 646 | # For text or json_object, just pass the type |
| MEDIUM | letta/services/mcp_manager.py | 1130 | # TODO: @jnjpng make this check more robust and remove direct os.getenv |
| MEDIUM | letta/services/mcp_server_manager.py | 1326 | # TODO: @jnjpng make this check more robust and remove direct os.getenv |
| MEDIUM | letta/services/tool_sandbox/modal_sandbox_v2.py | 418 | # Start with a more robust base image with development tools |
| LOW | letta/interfaces/anthropic_streaming_interface.py | 150 | # This interface doesn't track cache tokens, so we just use the raw values |
| LOW | letta/interfaces/anthropic_streaming_interface.py | 702 | # This interface doesn't track cache tokens, so we just use the raw values |
| MEDIUM | letta/interfaces/openai_streaming_interface.py | 476 | # Minimal, robust extraction: only emit the value of "message". |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | …/integration_test_typescript_tool_execution_sandbox.py | 595 | assert "let client: any = null;" in script |
| HIGH | …/integration_test_typescript_tool_execution_sandbox.py | 615 | result, agent_state = parse_typescript_result('{"results": 42, "agent_state": null}') |
| HIGH | tests/managers/test_message_manager.py | 1087 | arguments='{"message": {"status": "success", "data": {"count": 42, "items": ["a", "b"]}, "meta": null}}' |
| HIGH | letta/streaming_utils.py | 106 | # numbers, null, or a nested object/array) streamed in next, the stream |
| HIGH | letta/local_llm/json_parser.py | 63 | - if (function call is not send_message && prev message['role'] == user): insert heartbeat |
| HIGH | letta/server/rest_api/routers/v1/groups.py | 168 | include_return_message_types: Optional[List[MessageType]] = Query(None, description="Message types to include in res |
| HIGH | letta/server/rest_api/routers/v1/agents.py | 1601 | include_return_message_types: Optional[List[MessageType]] = Query(None, description="Message types to include in res |
| HIGH | letta/server/rest_api/routers/v1/messages.py | 46 | None, description="Message types to include in response. When null, all message types are returned." |
| HIGH | letta/server/rest_api/routers/v1/conversations.py | 214 | include_return_message_types: Optional[List[MessageType]] = Query(None, description="Message types to include in res |
| HIGH | letta/schemas/providers.py | 283 | # "param": null, |
| HIGH | letta/schemas/providers/openai.py | 184 | # "param": null, |
| HIGH | letta/functions/schema_validator.py | 173 | # They represent union types (e.g., string | null) |
| HIGH | letta/functions/helpers.py | 288 | # If we have exactly one type and null, make it Optional |
| HIGH | letta/llm_api/helpers.py | 39 | # If it's simple primitives only (string, null, integer, boolean, etc), flatten to type array |
| HIGH | letta/services/mcp_server_manager.py | 9 | from sqlalchemy import delete, desc, null, select |
| HIGH | letta/services/tool_sandbox/typescript_generator.py | 140 | "let client: any = null;", |
| HIGH | letta/services/tool_sandbox/typescript_generator.py | 209 | lines.append("const _output = { results: _result, agent_state: null };") |
| HIGH | letta/services/provider_trace_backends/clickhouse.py | 96 | # OpenAI Responses API returns {"error": null} on success |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | letta/orm/sqlalchemy_base.py | 270 | query = query.join(cls.identities).filter(cls.identities.property.mapper.class_.identifier_key.in_(identifie |
| CRITICAL | letta/jobs/llm_batch_job_polling.py | 55 | response = await server.anthropic_async_client.beta.messages.batches.retrieve(batch_id_str) |
| CRITICAL | letta/jobs/llm_batch_job_polling.py | 80 | results = await server.anthropic_async_client.beta.messages.batches.results(batch_resp_id) |
| CRITICAL | letta/services/block_manager.py | 404 | BlockModel.identities.property.mapper.class_.identifier_key.in_(identifier_keys) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | letta/services/tool_sandbox/local_sandbox.py | 149 | print(f"Auto-generated code for debugging:\n\n{code}") |
| HIGH | letta/services/tool_executor/tool_execution_sandbox.py | 49 | # This is the variable name in the auto-generated code that contains the function results |
| HIGH | letta/services/tool_executor/tool_execution_sandbox.py | 167 | logger.error(f"Logging out tool {self.tool_name} auto-generated code for debugging: \n\n{code}") |
| HIGH | letta/services/tool_executor/tool_execution_sandbox.py | 233 | logger.debug(f"Tool {self.tool_name} auto-generated code for debugging: \n\n{code}") |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_modal_sandbox_v2.py | 338 | def test_function(x: int, y: int) -> int: |
| LOW | tests/test_modal_sandbox_v2.py | 395 | mock_tool.source_code = "def test_function(x, y): return x * y" |
| LOW | tests/test_modal_sandbox_v2.py | 408 | mock_tool.source_code = "def test_function(x, y): return x + y" # Reset |
| LOW | tests/test_utils.py | 92 | def my_function(a: int, b: float, c: str, d: list, e: dict, f: CustomClass = None): |
| LOW | tests/conftest.py | 111 | def test_function(e2b_sandbox_mode, ...): |
| LOW | tests/conftest.py | 177 | def test_function(turbopuffer_mode, ...): |
| LOW | tests/test_sdk_client.py | 1722 | # def main_function(x: int, y: int) -> int: |
| LOW | tests/test_sdk_client.py | 1752 | # def process_data(data: str, count: int) -> str: |
| LOW | tests/test_sdk_client.py | 1639 | def main_function(x: int, y: int) -> int: |
| LOW | tests/managers/test_tool_manager.py | 1805 | def test_function(arg1: str) -> str: |
| LOW | tests/managers/test_tool_manager.py | 1834 | def test_function(arg1: str, arg2: int) -> str: |
| LOW | tests/managers/test_tool_manager.py | 1870 | def test_function(arg1: str, arg2: int = 5) -> str: |
| LOW | tests/managers/test_tool_manager.py | 1903 | def test_function(old_arg: str) -> str: |
| LOW | tests/managers/test_tool_manager.py | 1938 | def test_function(): |
| LOW | tests/managers/test_tool_manager.py | 1957 | def test_function(arg1: str) -> str: |
| LOW | tests/managers/test_tool_manager.py | 1986 | def test_function() -> str: |
| LOW | tests/managers/test_tool_manager.py | 2019 | def test_function() -> str: |
| LOW | tests/managers/test_tool_manager.py | 2034 | def test_function(new_arg: str) -> str: |
| LOW | tests/managers/test_tool_manager.py | 2067 | source_code="def test_function(): pass", |
| LOW | letta/validators.py | 136 | def my_function(agent_id: str, folder_id: str): |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/managers/test_cancellation.py | 1504 | |
| MEDIUM | tests/managers/test_cancellation.py | 1576 | |
| MEDIUM | tests/managers/test_cancellation.py | 1629 | |
| MEDIUM | tests/managers/test_cancellation.py | 1681 | |
| MEDIUM | tests/managers/test_cancellation.py | 1733 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | letta/local_llm/llm_chat_completion_wrappers/chatml.py | 24 | # Don't forget to use send_message, otherwise the user won't see your message""" |
| LOW | letta/local_llm/llm_chat_completion_wrappers/llama3.py | 23 | # Don't forget to use send_message, otherwise the user won't see your message""" |
| LOW | letta/server/server.py | 1847 | # Write out the file, and make sure to in include the top-level mcpConfig (wrapped to avoid blocking event loop) |
| LOW | letta/server/server.py | 1891 | # Write out the file, and make sure to in include the top-level mcpConfig (wrapped to avoid blocking event loop) |
| LOW | letta/llm_api/anthropic_client.py | 973 | # make sure to check for overflow errors, regardless of error type |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …/integration_test_typescript_tool_execution_sandbox.py | 425 | assert result.func_return == "John Doe" |
| LOW | tests/sdk/mcp_servers_test.py | 1072 | "content": 'Use the create_person tool to create a person named "John Doe", age 30, ' |
| LOW | tests/sdk/mcp_servers_test.py | 1073 | 'email "john@example.com", with address at "123 Main St", city "New York", zip "10001".', |
| LOW | tests/sdk/mcp_servers_test.py | 1089 | assert "John Doe" in person_return.tool_return, "Expected person name in response" |
| LOW | tests/data/api_server.go | 360 | userService.CreateUser("John Doe", "john@example.com") |
| LOW | tests/data/test.md | 78 | 1. Lorem ipsum dolor sit amet |
| LOW | tests/data/test.md | 78 | 1. Lorem ipsum dolor sit amet |