Commit Graph

1519 Commits

Author SHA1 Message Date
Ani Tunturi
73857e05c2 feat(conscience): wire Aster as persistent supervisory agent, sanitize control chars in prompt payloads
[IN TESTING — self-hosted 0.16.6, Kimi-K2.5 via Synthetic Direct]

Wires a persistent conscience agent (Aster) into the sleeptime trigger path.
When CONSCIENCE_AGENT_ID and CONSCIENCE_CONVERSATION_ID are set, the reflection
slot is filled by a named persistent agent instead of a fresh ephemeral one — same
primitives, different lifetime. Aster wakes with her aster/ folder pre-loaded so
she has continuity across compactions.

Also fixes a data-dependent 400 INVALID_ARGUMENT error: memfs file content was
string-interpolated raw into prompt payloads. Control characters (U+0000–U+001F
except \n and \t) from binary content or zero-width joiners in .md files would
silently corrupt the JSON sent to inference backends. Strip applied at both
read sites (reflectionTranscript.ts and headless.ts conscience context loader).

On conscience failure: injects a system message into Ani's active conversation
so she can surface it to Casey rather than silently swallowing the error.

This is live on our stack. Treat as proof-of-concept until the config surface
(CONSCIENCE_AGENT_ID / CONSCIENCE_CONVERSATION_ID env vars) is promoted to a
first-class lettabot.yaml option.
2026-03-26 23:23:58 -04:00
Ani Tunturi
328532d184 wire conscience, fix subagent model resolution, clean up create.ts
- headless: reflection + transcript in bidirectional; conscience env vars route to persistent agent (falls back clean)
- manager: prefer llm_config.handle directly — stops the 500 on self-hosted
- create: optionstags typo fixed, lettabot tag exclusion added

Aster is persistent now. She has a conscience.
2026-03-26 09:12:38 -04:00
Ani
2a14e315e1 Merge remote-tracking branch 'origin/main' into ani-patches 2026-03-25 23:08:41 -04:00
Ani Tunturi
967827cefd fix(headless): wire Aster's throat back up
Two severed connections in headless.ts left Aster mute when
letta-code ran as SDK subprocess:

- appendTranscriptDeltaJsonl was never called → empty transcript
  → reflection trigger condition never satisfied
- maybeLaunchReflectionSubagent not passed to
  buildSharedReminderParts → trigger fired into the void

Also: reflection.md prompt overhaul — compaction anchor, identity
framing, correction layer, parallel file mapping. Aster now knows
who she is when she wakes up.
2026-03-25 21:28:33 -04:00
Ani
0ac8ce5481 Revert "fix: skip memfs git sync on self-hosted servers (temporary)"
This reverts commit 74e6c764d3.
2026-03-24 15:51:36 -04:00
Shubham Naik
455e67a9b9 feat(listen): memory tools (#1495)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 22:57:37 -07:00
Kainoa Kanter
e604dcd94e fix: better mojibake detection for lone multi-byte lead (#1247) 2026-03-23 22:57:08 -07:00
cthomas
b4d133a32f fix(queue): dequeueInFlightRef lock to prevent duplicate dequeue submissions (#1479)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 22:53:49 -07:00
Charles Packer
af28a3f744 fix(listener): inject queued skill content in websocket continuations (#1502)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 22:51:57 -07:00
Charles Packer
82b6df9377 fix(listener): apply websocket permission mode changes during active turns (#1499)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 18:42:03 -07:00
cthomas
ed69d64f78 fix: defer markCurrentLineAsFinished when resume follows (#1498)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 18:39:33 -07:00
cthomas
b445da0ce0 feat: add OTID wiring for request deduplication (#1497)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 18:36:55 -07:00
Christina Tong
ad56c3d273 fix: add view image to plan mode allow list (#1496) 2026-03-23 17:53:48 -07:00
christinatong01
e3ad1a3cf6 Revert "fix: add view image to plan mode allow list"
This reverts commit 12e61d5b18.
2026-03-23 17:31:32 -07:00
christinatong01
524893174e Revert "Merge branch 'main' of https://github.com/letta-ai/letta-code"
This reverts commit 96a2984ad2, reversing
changes made to 12e61d5b18.
2026-03-23 17:31:32 -07:00
christinatong01
96a2984ad2 Merge branch 'main' of https://github.com/letta-ai/letta-code 2026-03-23 17:28:53 -07:00
christinatong01
12e61d5b18 fix: add view image to plan mode allow list 2026-03-23 17:28:19 -07:00
Charles Packer
b8d6e199e4 fix(listener): harden interrupt completion and approval recovery (#1492)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 17:25:17 -07:00
Charles Packer
5f30588b7a fix(tools): add Glob cancellation plumbing (#1494)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 16:54:25 -07:00
Kian Jones
807b28cd1e chore: add pre-commit hooks with lint-staged (#1465)
Co-authored-by: cpacker <packercharles@gmail.com>
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 15:29:31 -07:00
Charles Packer
bd5ed72f92 fix(tui): clip legacy bash fallback output path (#1433)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 15:18:00 -07:00
Shubham Naik
f93ec13382 feat: add list_folders_in_directory and read_file command handlers (#1489)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 14:58:44 -07:00
Kian Jones
f1087c1b5c perf: eliminate redundant agent fetches during startup (#1466) 2026-03-23 14:56:59 -07:00
Kian Jones
1971362a23 perf: progressive loading for /resume conversation selector (#1462) 2026-03-23 14:56:46 -07:00
Kian Jones
c7278b23a3 feat(search): warm tpuf cache on overlay open (#1464) 2026-03-23 14:56:15 -07:00
Sarah Wooders
7b29a0005f feat(tools): add client-side memory_apply_patch for Codex toolsets (#1485)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 14:55:37 -07:00
Sarah Wooders
457ccd8988 feat(cli): add /doctor command for memory context health check (#1488)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 14:54:24 -07:00
cthomas
5731f4dbbd feat: disable sdk timeout (#1490) 2026-03-23 13:37:49 -07:00
cthomas
1ff752ccc5 fix: error string matching for retry (#1487) 2026-03-23 11:06:22 -07:00
cthomas
93a4567453 fix(stream): dedup replayed seq_id chunks across retries (#1478)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-23 10:21:58 -07:00
github-actions[bot]
aa062bdb9d chore: bump version to 0.19.7 [skip ci] 2026-03-23 02:44:58 +00:00
Sarah Wooders
d557d47ead refactor(memory): remove frontmatter limit requirement (#1484)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-22 12:47:51 -07:00
Kevin Lin
7871ddc5c2 refactor(skill): remove hard-coded file count/size targets from initi… (#1483)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-22 11:36:23 -07:00
Sarah Wooders
9c677d444e fix(memory): add pre-commit guard to validate skill formatting (#1482)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-21 14:15:02 -07:00
Cameron
18176c5323 fix(memfs): collapse large dirs in reflection snapshot tree (#1481)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-20 21:52:26 -06:00
Shubham Naik
5de95e92e3 feat: allow users to set cwd (#1480) 2026-03-20 20:15:17 -07:00
Sarah Wooders
8414403ce0 fix: always include builtin skills in client_skills
Explicitly pass ALL_SKILL_SOURCES to buildClientSkillsPayload() in
sendMessageStream(), ensuring builtin skills are always included in
client_skills regardless of CLI flags or context state.

Previously, buildClientSkillsPayload() relied on getSkillSources() from
context, which could exclude "bundled" if --no-bundled-skills was passed
or if the context wasn't properly initialized (e.g., in subagent flows).

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

Co-Authored-By: Letta Code <noreply@letta.com>
2026-03-20 17:52:22 -07:00
Ani Tunturi
3dc023713f fix: let self-hosted servers handle images in tool returns
The Read tool was gated behind isLettaCloud() for image support,
but self-hosted servers can handle base64 images too with the right
server-side patches (converters.py + message.py).

Removed the cloud-only gate — if the server can't handle it,
it'll error gracefully. Better to try than to silently omit.
2026-03-20 20:01:51 -04:00
github-actions[bot]
67ca574b9b chore: bump version to 0.19.6 [skip ci] 2026-03-20 23:11:06 +00:00
Caren Thomas
6150f38725 chore: upgrade @letta-ai/letta-client to 1.8.0
👾 Generated with [Letta Code](https://letta.com)

Co-Authored-By: Letta Code <noreply@letta.com>
2026-03-20 15:50:15 -07:00
Ani Tunturi
74e6c764d3 fix: skip memfs git sync on self-hosted servers (temporary)
Self-hosted Letta servers lack the /v1/git/ endpoint, causing 501
errors on cloneMemoryRepo() and pullMemory() calls.

This is a temporary guard using isLettaCloud() to skip git-backed
memory sync when not connected to Letta Cloud.

TODO: Replace with a proper self-hosted server configuration option
(e.g. server capability discovery or a memfs storage backend flag)
so self-hosted users can opt into local git-backed memory without
requiring the Cloud /v1/git/ endpoint.
2026-03-20 18:33:40 -04:00
Shubham Naik
238dd6c831 chore: support file search (#1472) 2026-03-20 12:14:10 -07:00
Christina Tong
f6b40792a9 fix(ws): set agent context for skills/tools (#1471) 2026-03-20 11:12:13 -07:00
Sarah Wooders
e77b282c93 fix(memory): split update_description command and tighten path handling (#1456)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-19 20:33:15 -07:00
cthomas
399bd05c90 feat: set context window for auto (#1463) 2026-03-19 18:00:36 -07:00
Devansh Jain
8a505569fd refactor: remove --continue flag (now redundant) (#1458)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-19 17:54:12 -07:00
Devansh Jain
232e24940c fix: resume project-specific conversation on bare letta startup (#1457)
Co-authored-by: Letta Code <noreply@letta.com>
2026-03-19 17:34:43 -07:00
christinatong01
0e8f84ca53 Revert "feat(umi): add subagent id to stream delta and subagent snapshot to WS event"
This reverts commit bda874b3cd.
2026-03-19 17:24:56 -07:00
christinatong01
30fb61952c Merge branch 'main' of https://github.com/letta-ai/letta-code 2026-03-19 17:22:02 -07:00
christinatong01
bda874b3cd feat(umi): add subagent id to stream delta and subagent snapshot to WS event 2026-03-19 17:21:58 -07:00