Commit Graph

78 Commits

Author SHA1 Message Date
Christina Tong
d2e19bbc05 chore: conversation id filter to list_messages [LET-6875] (#8406)
* chore: add default conversation id filter to list_messages

* fix filter

* update comment
2026-01-12 10:57:48 -08:00
Charles Packer
ed6284cedb feat: Add conversation_id filtering to message endpoints (#8324)
* feat: Add conversation_id filtering to message list and search endpoints

Add optional conversation_id parameter to filter messages by conversation:
- client.agents.messages.list
- client.messages.list
- client.messages.search

Changes:
- Added conversation_id field to MessageSearchRequest and SearchAllMessagesRequest schemas
- Added conversation_id filtering to list_messages in message_manager.py
- Updated get_agent_recall_async and get_all_messages_recall_async in server.py
- Added conversation_id query parameter to router endpoints
- Updated Turbopuffer client to support conversation_id filtering in searches

Fixes #8320

🤖 Generated with [Letta Code](https://letta.com)

Co-Authored-By: Charles Packer <cpacker@users.noreply.github.com>

* add conversation_id to message and tpuf

* default messages filter for backward compatibility

* add test and auto gen

* fix integration test

* fix test

* update test

---------

Co-authored-by: letta-code <248085862+letta-code@users.noreply.github.com>
Co-authored-by: Charles Packer <cpacker@users.noreply.github.com>
Co-authored-by: christinatong01 <christina@letta.com>
2026-01-12 10:57:48 -08:00
github-actions[bot]
abb325f32d fix: prevent ForeignKeyViolationError on messages table (#8202)
Add validation in `create_many_messages_async` to check if run_ids exist
before attempting to insert messages. If a run has been deleted (e.g.,
during cancellation or cleanup) while messages are still being created,
the run_id is set to NULL instead of causing a ForeignKeyViolationError.

This handles the race condition where:
1. A run is created and workflow is started
2. The run is deleted before the workflow's message creation completes
3. The message insert fails with FK violation

Fixes #8201, #8119, #8091, #8025

🤖 Generated with [Letta Code](https://letta.com)

Co-authored-by: letta-code <248085862+letta-code@users.noreply.github.com>
Co-authored-by: Letta <noreply@letta.com>
2026-01-12 10:57:48 -08:00
cthomas
9a95a8f976 fix: duplicate session commit in step logging (#7512)
* fix: duplicate session commit in step logging

* update all callsites
2026-01-12 10:57:19 -08:00
jnjpng
591420876a fix: correct decorator order for trace_method and raise_on_invalid_id (#7226)
Swap the order of @trace_method and @raise_on_invalid_id decorators
across all service managers so that @trace_method is always the first
wrapper applied to the function (positioned directly above the method).

This ensures the ID validation happens before tracing begins, which is
the intended execution order.

Files modified:
- agent_manager.py (23 occurrences)
- archive_manager.py (11 occurrences)
- block_manager.py (7 occurrences)
- file_manager.py (6 occurrences)
- group_manager.py (9 occurrences)
- identity_manager.py (10 occurrences)
- job_manager.py (7 occurrences)
- message_manager.py (2 occurrences)
- provider_manager.py (3 occurrences)
- sandbox_config_manager.py (7 occurrences)
- source_manager.py (5 occurrences)
- step_manager.py (13 occurrences)
2025-12-17 17:31:02 -08:00
Kian Jones
94c2921711 chore: walk back some temporary debugging stuff (#6332)
* first pass

* uv lock
2025-11-24 19:10:27 -08:00
Ari Webb
cee3c7ed58 fix: don't embed system messages [LET-6243] (#6307)
don't embed system messages

Co-authored-by: Ari Webb <ari@letta.com>
2025-11-24 19:10:26 -08:00
Christina Tong
04611b981c feat: filter messages search endpoint by agent id [LET-6229] (#6246)
* feat: filter messages search endpoint by agent id [LET-6229]

* add autogenerated schema/types
2025-11-24 19:09:33 -08:00
Kian Jones
848aa962b6 feat: add memory tracking to core (#6179)
* add memory tracking to core

* move to asyncio from threading.Thread

* remove threading.thread all the way

* delay decorator monitoring initialization until after event loop is registered

* context manager to decorator

* add psutil
2025-11-24 19:09:32 -08:00
Kian Jones
7f49e08be9 fix: attempt to better handle reasoning content in embedding flow, and add test coverage (#6171)
fix and test case addition
2025-11-24 19:09:32 -08:00
Kian Jones
9e9ae9d4ae fix: check content before embedding (#6147)
* to_text for reasoning

* caren's feedback

* prefer to_text over text and content
2025-11-13 15:36:56 -08:00
Kian Jones
45065297a0 feat: runtime validation for ids for internal managers calls (#5544)
* claude coded first pass

* fix test cases to expect errors instead

* fix this

* let's see how letta-code did

* claude

* fix tests, remove dangling comments, retrofit all managers functions with decorator

* revert to main for these since we are not erroring on invalid tool and block ids

* reorder decorators

* finish refactoring test cases

* reorder agent_manager decorators and fix test tool manager

* add decorator on missing managers

* fix id sources

* remove redundant check

* uses enum now

* move to enum
2025-10-24 15:13:47 -07:00
jnjpng
5913730992 fix: ensure messages are in chronological order when backfilling tool call id (#5520)
* base

* base

---------

Co-authored-by: Letta Bot <noreply@letta.com>
2025-10-24 15:12:11 -07:00
Matthew Zhou
6cfdcc584c fix: Add backfill for message listing without tool call id [LET-5479] (#5400)
* Add warning comment

* Remove extra commit

* Remove extra helper unused
2025-10-24 15:11:31 -07:00
Sarah Wooders
134e0203c2 fix: remove MessageModel.is_err == False) | (MessageModel.is_err.is_(None) (#5160) 2025-10-07 17:50:49 -07:00
Sarah Wooders
354205f581 feat: create new runs table [LET-4467] (#4841) 2025-10-07 17:50:47 -07:00
Matthew Zhou
171f9b0b19 fix: Refactor reset messages async to reduce idle in transaction [LET-4529] (#4958)
* Reduce comments

* Move turbopuffer outside of reset messages
2025-10-07 17:50:46 -07:00
Matthew Zhou
b43193bf53 fix: Move turbopuffer logic out async db session [LET-4528] (#4957)
Move turbopuffer logic out async db session
2025-10-07 17:50:46 -07:00
Sarah Wooders
53786ee102 feat: asyncify test_manager.py [LET-4494] (#4890)
* add test_agent_manager.py

* created shared conftest

* add test_tool_manager.py

* add tag tests

* add message manager tests

* add blocks

* add org

* add passage tests

* add archive manager

* add user manager

* add identity

* add job manager tests

* add sandbox manager

* add file manager

* add group managers

* add mcp manager

* fix batch tests

* update workflows

* fix test_managers.py

* more tests

* comment out old test and add file

---------

Co-authored-by: Matthew Zhou <mattzh1314@gmail.com>
2025-10-07 17:50:46 -07:00
Sarah Wooders
4df0a27eb0 chore: remove sync db (#4873) 2025-10-07 17:50:45 -07:00
Matthew Zhou
2f716d4961 feat: Add partial flag on create_many_messages_async (#4836)
Add partial flag
2025-10-07 17:50:45 -07:00
Kian Jones
b8e9a80d93 merge this (#4759)
* wait I forgot to comit locally

* cp the entire core directory and then rm the .git subdir
2025-09-17 15:47:40 -07:00
Kian Jones
22f70ca07c chore: officially migrate to submodule (#4502)
* remove apps/core and apps/fern

* fix precommit

* add submodule updates in workflows

* submodule

* remove core tests

* update core revision

* Add submodules: true to all GitHub workflows

- Ensure all workflows can access git submodules
- Add submodules support to deployment, test, and CI workflows
- Fix YAML syntax issues in workflow files

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* remove core-lint

* upgrade core with latest main of oss

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-09 12:45:53 -07:00
Matthew Zhou
acaf820009 feat: Add project_id to message filtering/inserting to Turbopuffer [LET-4252] (#4466)
* Add project_id

* Fern autogen
2025-09-08 14:35:15 -07:00
Matthew Zhou
af302e8ac8 feat: Write tests for search messages [LET-4212] (#4447)
* Adjust naming

* Add testing and improve message search

* Adjust comments

* Change query text to query

* Fern autogen
2025-09-05 17:52:13 -07:00
Matthew Zhou
2ef47d8002 feat: Add search messages endpoint [LET-4144] (#4434)
* Add search messages endpoint

* Run fern autogen and fix tests
2025-09-05 14:28:27 -07:00
Matthew Zhou
cbf2e09e13 feat: Add project id to message schema [LET-4166] (#4433)
* Add project id

* Propogate through update message by id async

* Add project id testing
2025-09-04 16:50:41 -07:00
Matthew Zhou
dda4459245 feat: Make end date inclusive on conversation search (#4431)
Make end date inclusive
2025-09-04 15:26:49 -07:00
Matthew Zhou
5337e5bcac feat: Move message embedding to background task [LET-4189] (#4430)
* Test background message embedding

* Change to content
2025-09-04 15:05:35 -07:00
Matthew Zhou
d924cc005b fix: change to pure rank-based RRF for relevance ordering (#4411)
* Fix RRF

* Fix turbopuffer tests
2025-09-03 17:33:19 -07:00
Matthew Zhou
6e633bd8f9 feat: Change namespace to be org scoped and filter on agent_id [LET-4163] (#4368)
* Change to org scoped and agent_id filtering

* Finish modifying conversation search tool

* Fix failing tests

* Get rid of bad imports
2025-09-03 10:00:19 -07:00
Matthew Zhou
c69fc95870 feat: Extend crud lifecycle of messages [LET-4158] (#4364)
Extend crud lifecycle of messages
2025-09-02 14:38:30 -07:00
Matthew Zhou
8f425aa024 feat: Modify conversation search tool to be hybrid (#4362)
* Modify conversation search functionality

* Gate the roles
2025-09-02 13:45:53 -07:00
Matthew Zhou
6b625cb039 feat: Extract more text from messages [LET-4154] (#4359)
* Extract more message types

* Add extra tests testing for multiple parts
2025-09-02 13:25:32 -07:00
Matthew Zhou
b8a198688f feat: Embed all messages in turbopuffer [LET-4143] (#4352)
* wip

* Finish embedding

* Fix ruff and tests
2025-09-02 12:43:48 -07:00
Kian Jones
fecf6decfb chore: migrate to ruff (#4305)
* base requirements

* autofix

* Configure ruff for Python linting and formatting

- Set up minimal ruff configuration with basic checks (E, W, F, I)
- Add temporary ignores for common issues during migration
- Configure pre-commit hooks to use ruff with pass_filenames
- This enables gradual migration from black to ruff

* Delete sdj

* autofixed only

* migrate lint action

* more autofixed

* more fixes

* change precommit

* try changing the hook

* try this stuff
2025-08-29 11:11:19 -07:00
cthomas
873791659c feat: use no_refresh flag in message update (#3439) 2025-07-20 22:11:09 -07:00
cthomas
93ebac3586 feat: use no_refresh in message creation (#3435) 2025-07-20 20:38:23 -07:00
cthomas
810628acd9 feat: remove organization from pydantic message model (#3411) 2025-07-19 09:28:54 -07:00
Andy Li
1ccaae8960 chore: cleanup database detection 2025-07-18 17:12:56 -07:00
Andy Li
60c4e23904 feat: stop reasons and error messages and sentry fixes 2025-07-18 11:56:20 -07:00
Kian Jones
0cd8c830c9 feat(sqlite): CI Tests for Alembic and SQLite (#3358)
Co-authored-by: Matt Zhou <mattzh1314@gmail.com>
2025-07-17 18:04:13 -07:00
Matthew Zhou
ec1b2c823a feat: Integrate performant validate_agent_exists_async (#3350) 2025-07-15 17:15:33 -07:00
Matthew Zhou
6a59186a08 feat: Change reset messages to always preserve the original system message (#2813) 2025-06-13 18:58:27 -07:00
cthomas
20e6732f36 feat: add multi-modal input support (#2590) 2025-06-08 18:28:01 -07:00
Andy Li
d2252f2953 feat: otel metrics and expanded collecting (#2647)
(passed tests in last run)
2025-06-05 17:20:14 -07:00
cthomas
78c82f1ad9 fix: move db logic inside sessions (#2553) 2025-05-30 14:02:25 -07:00
Andy Li
275b75901d chore: cleanup (#2480) 2025-05-29 10:40:41 -07:00
cthomas
7346473ebe feat: optimize get message ids (#2508) 2025-05-28 23:15:36 -07:00
cthomas
3a893daec0 feat(asyncify): convert reset messages endpoint (#2429) 2025-05-25 21:23:18 -07:00