Commit Graph

62 Commits

Author SHA1 Message Date
jnjpng
e1dd62f0a8 fix: correct datetime.timezone import in chatgpt_oauth (#8837)
The import was `from datetime import datetime` but the code used
`datetime.timezone.utc` which is incorrect - timezone is a sibling
class in the datetime module, not an attribute of the datetime class.

This caused the error: "type object 'datetime.datetime' has no
attribute 'timezone'"
2026-01-19 15:54:42 -08:00
jnjpng
637e320b11 chore: fix up minor nits and typing for chatgpt client (#8807)
base
2026-01-19 15:54:42 -08:00
jnjpng
5017cb1d12 feat: add chatgpt oauth client for codex routing (#8774)
* base

* refresh

* use default model fallback

* patch

* streaming

* generate
2026-01-19 15:54:42 -08:00
cthomas
9b5067bed9 fix: remove unused sync code (#8613)
* chore: remove unused sync code

* chore: remove deprecated sync Google AI functions

Removes unused sync functions that used httpx.Client (blocking):
- google_ai_get_model_details()
- google_ai_get_model_context_window()
- GoogleGeminiProvider.get_model_context_window()

All code now uses async versions with httpx.AsyncClient.

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

Co-Authored-By: Letta <noreply@letta.com>

---------

Co-authored-by: Letta <noreply@letta.com>
2026-01-19 15:54:37 -08:00
Ari Webb
cc825b4f5c Revert "Revert "feat: enable provider models persistence" (#6590)" (#6595) 2026-01-12 10:57:48 -08:00
cthomas
6f1ead8ba9 fix: remove sync api calls for byok (#8031)
* fix: remove sync api calls for byok

* fix import
2026-01-12 10:57:47 -08:00
Sarah Wooders
b4b07ceecc feat: add glm 4.7 (#8005) 2026-01-12 10:57:20 -08:00
Ari Webb
3c4cc878ab fix: update glm context windows (#7675) 2026-01-12 10:57:20 -08:00
jnjpng
a1fb295e69 feat: enable claude pro max plan for letta code (#7663)
* base

* more

* rev
2026-01-12 10:57:19 -08:00
Ari Webb
cd45212acb feat: add zai provider support (#7626)
* feat: add zai provider support

* add zai_api_key secret to deploy-core

* add to justfile

* add testing, provider integration skill

* enable zai key

* fix zai test

* clean up skill a little

* small changes
2026-01-12 10:57:19 -08:00
Ari Webb
e47eb23522 fix: max output tokens for gemini 3 models (#7322) 2025-12-17 17:31:03 -08:00
jnjpng
350f3a751c fix: update more plaintext non async callsites (#7223)
* bae

* update

* fix

* clean up

* last
2025-12-17 17:31:02 -08:00
Kevin Lin
857139f907 feat: Set reasonable defaults for max output tokens [LET-6483] (#7084) 2025-12-17 17:31:02 -08:00
Sarah Wooders
0c0ba5d03d fix: remove letta-free embeddings from testing (#6870) 2025-12-15 12:03:09 -08:00
jnjpng
3221ed8a14 fix: update base provider to only handle _enc fields (#6591)
* base

* update

* another pass

* fix

* generate

* fix test

* don't set on create

* last fixes

---------

Co-authored-by: Letta Bot <noreply@letta.com>
2025-12-15 12:02:34 -08:00
Sarah Wooders
8440e319e2 Revert "feat: enable provider models persistence" (#6590)
Revert "feat: enable provider models persistence (#6193)"

This reverts commit 9682aff32640a6ee8cf71a6f18c9fa7cda25c40e.
2025-12-15 12:02:34 -08:00
Ari Webb
848a73125c feat: enable provider models persistence (#6193)
* Revert "fix test"

This reverts commit 5126815f23cefb4edad3e3bf9e7083209dcc7bf1.

* fix server and better test

* test fix, get api key for base and byok?

* set letta default endpoint

* try to fix timeout for test

* fix for letta api key

* Delete apps/core/tests/sdk_v1/conftest.py

* Update utils.py

* clean up a few issues

* fix filterning on list_llm_models

* soft delete models with provider

* add one more test

* fix ci

* add timeout

* band aid for letta embedding provider

* info instead of error logs when creating models
2025-12-15 12:02:34 -08:00
Devansh Jain
d1536df6f6 chore: Update deepseek client for v3.2 models (#6556)
* support for v3.2 models

* streaming + context window fix

* fix for no assitant text from deepseek
2025-12-15 12:02:34 -08:00
jnjpng
89ca8fe8b0 feat: read from encrypted values with error on fallback [LET-4250] (#6484)
* base

* warning

---------

Co-authored-by: Letta Bot <noreply@letta.com>
2025-12-15 12:02:33 -08:00
Charles Packer
c4699b3d17 feat: add support for opus 4.5 (#6256)
* feat: add support for new model

* fix: just stage-api && just publish-api (anthropic model settings changed)

* fix: just stage-api && just publish-api (anthropic model settings changed)

* fix: make kevlar have default reasoning on

* fix: bump anthropic sdk version

* fix: patch name

* pin newer version anthropic

---------

Co-authored-by: Ari Webb <ari@letta.com>
2025-11-24 19:10:27 -08:00
cthomas
1c358c863e fix: google api sync request (#6292)
* fix: google api sync request

* remove unused function
2025-11-24 19:10:26 -08:00
cthomas
f6fb9aed3f feat: extend azure timeout (#6284) 2025-11-24 19:10:26 -08:00
cthomas
6cc7f63373 feat: convert azure provider to be fully async (#6272)
feat: convert azure provider to be fully sync
2025-11-24 19:10:11 -08:00
Kian Jones
abb13ef352 fix: Remove nltk blocking download and make azure model listing non-blocking (#6214)
* Fix event loop blocking in NLTK downloads and Azure model listing

Found via watchdog detecting 61.6s hang during file upload.

**Root causes:**
1. NLTK punkt_tab downloads blocking during file processing
2. Azure model listing using sync requests.get() in async context

**Fixes:**
1. Pre-download NLTK data at Docker build time
2. Async fallback download at startup if build failed
3. Move Azure model fetch to thread pool with asyncio.to_thread()

**Impact:**
- Eliminates 60+ second event loop hangs
- Startup: instant if data baked in, ~60s async if needs download
- Requests: never block, all I/O offloaded to threads

* Fix Docker build: ensure /root/nltk_data exists even if download fails

- Create directory before download attempt
- Add verification step to confirm download success
- Directory always exists so COPY won't fail in runtime stage

* Fix: use venv python for NLTK download in Docker build

The builder stage installs NLTK in /app/.venv but we were using
system python which doesn't have NLTK. Now using venv python so
download actually works.

* Use uv run for NLTK download (more idiomatic)

uv run automatically uses the synced venv, cleaner than hardcoding
the venv path.
2025-11-24 19:09:33 -08:00
Tomas
294de41e6c Add context windows for grok-4 models (#3043) 2025-11-19 09:21:46 -08:00
Sarah Wooders
7f128544d7 fix: patch handle matching for LLMs (#5801) 2025-11-13 15:36:02 -08:00
Kian Jones
704d3b2d79 chore: refactor not to use warnings.warn (#5730)
* refactor not to use warnings.warn

* temp circular import fix maybe unecessary/bnad

* fix Deprecation warning

* fix deprecation warning and mcp thing?

* revert changes to mcp server test

* fix deprecation warning
2025-10-24 15:14:31 -07: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
b3fef4b5a8 feat: double write to all encrypted columns and decrypt on read (#5265)
* base

* use secret field

* fix

* auth code

* stage publish

* decouple backfill

* revert uncomment

* providers and agent vars

* mcp

* mcp

* stage and publish

* fix oauth

* double encrypt

* sandbox

---------

Co-authored-by: Letta Bot <noreply@letta.com>
2025-10-24 15:11:31 -07:00
jnjpng
a772bedfe4 feat: add secret pydantic fields (#5291)
* add secret pydantic fields

* stage publish

---------

Co-authored-by: Letta Bot <noreply@letta.com>
2025-10-09 15:25:21 -07:00
Charles Packer
07a687880f feat(core): add sonnet 1m support [LET-4620] (#5152)
feat(core): add sonnet 1m support
2025-10-07 17:50:49 -07:00
Charles Packer
811b3e6cb6 feat: allow customizing the handle base for openrouter and for vllm [LET-4609] (#5114)
* feat: allow setting VLLM_HANDLE_BASE

* feat: same thing for openrouter
2025-10-07 17:50:49 -07:00
Kevin Lin
d6bde22ab1 fix: add context window for sonnet 4.5 (#5121) 2025-10-07 17:50:49 -07:00
Charles Packer
a4041879a4 feat: add new agent loop (squash rebase of OSS PR) (#4815)
* feat: squash rebase of OSS PR

* fix: revert changes that weren't on manual rebase

* fix: caught another one

* fix: disable force

* chore: drop print

* fix: just stage-api && just publish-api

* fix: make agent_type consistently an arg in the client

* fix: patch multi-modal support

* chore: put in todo stub

* fix: disable hardcoding for tests

* fix: patch validate agent sync (#4882)

patch validate agent sync

* fix: strip bad merge diff

* fix: revert unrelated diff

* fix: react_v2 naming -> letta_v1 naming

* fix: strip bad merge

---------

Co-authored-by: Kevin Lin <klin5061@gmail.com>
2025-10-07 17:50:45 -07:00
Charles Packer
9edc7f4d64 feat: add OpenRouterProvider (#4848)
* feat: init add of openrouter provider, doesn't work bc no key pass and no header pass

* fix: working
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
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
7bd9be5a04 feat: add form field validation in UI for bedrock byok (#4141) 2025-08-24 14:23:13 -07:00
Matthew Zhou
4fb0fe28b7 fix: Fix letta-free embeddings (#4055) 2025-08-20 13:33:31 -07:00
cthomas
be5a7e5397 feat: set frequency penalty to 1 for letta free (#4009) 2025-08-19 13:08:23 -07:00
cthomas
2862913b77 fix: openai test connection (#3981) 2025-08-18 14:22:36 -07:00
cthomas
4765f8e7f5 feat: set frequency penalty to 1 for gpt-4o (#3962) 2025-08-18 14:20:16 -07:00
Sarah Wooders
8417a7f54d fix: patch openai byok (#3966) 2025-08-16 13:41:48 -07:00
Sarah Wooders
891da984a6 fix: fix various ease of use problems (#3934)
Co-authored-by: Matt Zhou <mattzh1314@gmail.com>
2025-08-15 00:07:12 -07:00
cthomas
1ef6e1ee41 chore: delete legacy azure client (#3911) 2025-08-13 16:24:47 -07:00
cthomas
63738ffa0c chore: delete legacy bedrock client (#3912) 2025-08-13 16:20:48 -07:00
cthomas
cdd4815af4 chore: fully sunset cohere (#3910) 2025-08-13 16:05:06 -07:00
cthomas
2fbcbd765a chore: delete legacy anthropic client (#3908) 2025-08-13 15:53:27 -07:00
cthomas
ea10e88d99 feat: make together provider field optional (#3896) 2025-08-13 12:10:20 -07:00