Commit Graph

275 Commits

Author SHA1 Message Date
jamesdanielwhitford
cae5b104b3 feat: add Mistral Voxtral transcription support (#228) 2026-02-23 13:37:12 -08:00
Cameron
6bda859559 fix: default memfs to false instead of undefined (#362) 2026-02-23 12:59:13 -08:00
Cameron
e7bb2a77f1 feat: community-contributable loom displays (#361) 2026-02-23 12:39:43 -08:00
Cameron
4fa212a9a1 fix: harden agent store persistence and startup agent discovery (#357) 2026-02-23 12:06:53 -08:00
dependabot[bot]
92d8a0cf10 chore(deps): bump @letta-ai/letta-code-sdk from 0.1.1 to 0.1.2 (#352)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 11:22:07 -08:00
Cameron
0544102fe3 feat: display tool calls and reasoning in channel output (#302) 2026-02-23 09:15:43 -08:00
Cameron
a06641b08d feat: surface meaningful API error messages to users (#350) 2026-02-23 00:11:04 -08:00
github-actions[bot]
a3c944bd13 feat: expose memfs (memory filesystem) option in lettabot config and SDK session (#336)
Adds features.memfs config key that controls whether the Letta Code CLI
receives --memfs or --no-memfs when creating/resuming SDK sessions. This
enables lettabot users to opt into git-backed memory filesystem (context
repositories) for persistent local memory sync.

- Config types: memfs?: boolean on AgentConfig.features, LettaBotConfig.features, BotConfig
- Bot wiring: baseSessionOptions() and createAgent() pass memfs to SDK when defined
- Main wiring: YAML config takes precedence, LETTABOT_MEMFS env var as fallback
- Legacy fix: conversations passthrough in single-agent normalization
- Tests: 3 memfs wiring tests (true/false/undefined), 2 conversations passthrough tests
- Docs: configuration.md section with known limitations, example YAML

Fixes #335

Written by Cameron and Letta Code

"The best way to predict the future is to implement it." -- David Heinemeier Hansson
2026-02-22 05:37:01 +01:00
Jason Carreira
4e697001c0 docs: update conversation routing and group config documentation (#318)
Adds documentation for per-channel conversation routing and updated group configuration options. Fills the gap left by the implementation PRs.

Closes #304

Written by Cameron and Letta Code

"Documentation is a love letter that you write to your future self." -- Damian Conway
2026-02-21 12:38:06 +01:00
Jason Carreira
0ee044bf94 fix: reset-conversation clears per-channel conversations in v2 store (#320)
The reset-conversation CLI command was reading/writing the agent JSON file directly, missing the per-channel conversations map introduced with conversation routing. Now uses Store.clearConversation() which clears both the legacy conversationId and all per-channel conversation keys.

Also adds multi-agent awareness: prompts which agent to reset when multiple agents are configured.

Closes #316

Written by Cameron and Letta Code

"Debugging is twice as hard as writing the code in the first place." -- Brian Kernighan
2026-02-21 12:37:22 +01:00
Jason Carreira
38428c1e7c fix: parse directives before checking no-reply marker (#338)
Fixes reaction-only responses triggering spurious error messages. The <no-reply/> check now runs after directive parsing in both finalizeMessage() and the post-stream handler.

Fixes the case where <actions><react emoji="..." /></actions> as the full response would add the reaction but also send an error message.

Written by Cameron and Letta Code

"First, solve the problem. Then, write the code." -- John Johnson
2026-02-21 12:37:02 +01:00
Cameron
d4c3d32a8d fix: replace unhelpful error messages with actionable guidance (#332) 2026-02-21 12:17:12 +01:00
Cameron
6cc59708ff fix(core): harden session lifecycle around init/send failures (#333) 2026-02-21 12:16:58 +01:00
Sarah Wooders
61c2657885 fix(build): normalize executable bits for CLI bin outputs (#334)
Co-authored-by: Letta <noreply@letta.com>
2026-02-18 11:18:12 -08:00
Cameron
83da7069cf revert: remove unreviewed multi-agent routing scaffold (#330) 2026-02-18 14:57:50 +01:00
Sarah Wooders
44c5a70761 fix(core): restore gateway compatibility and unblock build (#327)
Co-authored-by: Letta <noreply@letta.com>
2026-02-17 18:58:55 -08:00
Sarah Wooders
60f70089a6 feat(core): add multi-agent routing foundation
Add config normalization, routing bindings, and per-agent instance management to support channel/account-aware dispatch with default agent fallback.

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

Co-Authored-By: Letta <noreply@letta.com>
2026-02-17 17:34:48 -08:00
Charles Packer
3e38a35736 chore: bump @letta-ai/letta-code-sdk to 0.1.1 (#315) 2026-02-16 23:48:51 -08:00
Charles Packer
d85a836ba7 test: lock SDK session reuse contract for follow-up sends (#314) 2026-02-16 19:52:17 -08:00
Charles Packer
94bd4d2d12 chore(deps): bump @letta-ai/letta-code-sdk to 0.1.0 (#313) 2026-02-16 19:41:11 -08:00
github-actions[bot]
b6bfd14cd9 fix: wire up cron job --deliver flag to actually deliver responses (#290)
Co-authored-by: letta-code <248085862+letta-code@users.noreply.github.com>
Co-authored-by: Cameron <cpfiffer@users.noreply.github.com>
Co-authored-by: Cameron <cameron@pfiffer.org>
2026-02-13 18:10:24 -08:00
Cameron
6ef987a04f fix: modernize onboarding group settings with unified modes (#296) 2026-02-13 17:59:40 -08:00
Cameron
c083638be1 feat: remote pairing approval via API (#301) 2026-02-13 17:35:56 -08:00
Cameron
560380d721 feat: per-channel conversation routing (#299) 2026-02-13 17:21:38 -08:00
Cameron
09ce3b810f fix: listen mode streaming leak + receiveBotMessages for Discord (#295) 2026-02-12 18:57:13 -08:00
Cameron
add73bdb51 feat: show version and commit hash in startup banner (#293) 2026-02-12 18:49:20 -08:00
Cameron
296db3a858 fix: expose WhatsApp/Signal connection fields in per-agent config (#294) 2026-02-12 18:40:46 -08:00
John Wessel
d0a34d209e Auto-bind to 0.0.0.0 on container platforms for health checks (#291)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:38:47 -08:00
Cameron
014c2b56aa fix: read heartbeat target from per-agent config (#292) 2026-02-12 18:36:25 -08:00
Cameron
b79d705a99 perf: reuse SDK session subprocess across messages (#289) 2026-02-12 11:24:58 -08:00
Cameron
01ed38a15d feat: per-agent todo system with heartbeat integration (#288) 2026-02-12 10:23:14 -08:00
Cameron
dcd428d598 fix: improve error logging for failed agent runs (#287) 2026-02-11 15:42:17 -08:00
Cameron
de216ea3ff fix: TS compilation errors from #283 squash merge (#286) 2026-02-11 15:24:48 -08:00
Cameron
c405c96c9d feat: add per-group allowedUsers filtering for all channels (#283) 2026-02-11 15:20:01 -08:00
Cameron
9550fc0c03 Fix cron-jobs path mismatch between CronService and lettabot-schedule (#284) 2026-02-11 14:04:26 -08:00
Cameron
e395dc58a4 docs: add group behavior and multi-bot sections to Discord setup (#282) 2026-02-11 12:23:32 -08:00
Cameron
046f15feaa fix: centralize strict config loading and fail fast on invalid config (#280) 2026-02-11 10:47:16 -08:00
Cameron
c0f82ccd63 Merge remote-tracking branch 'origin/fix/server-api-config' into HEAD
# Conflicts:
#	docs/configuration.md
#	src/config/io.ts
#	src/main.ts
2026-02-10 20:39:54 -08:00
Charles Packer
de1adcf4fe fix: fix server terminology with mode aliases (#277) 2026-02-10 20:34:29 -08:00
Cameron
c4c8b17018 fix: support server.api config, preserve api across onboard, fix load error logging
Three bugs fixed:

1. server.api is now the canonical location for API server config (port,
   host, CORS). Users naturally nest api under server -- this now works.
   Top-level api still accepted with a deprecation warning.

2. Onboarding no longer silently drops api and attachments config when
   saving. Both interactive and non-interactive paths now preserve
   unmanaged top-level fields from the existing config.

3. When YAML parsing fails, the log no longer misleadingly says
   "Loaded from lettabot.yaml". A didLoadFail() flag enables accurate
   status reporting without changing 17+ loadConfig() call sites.

Written by Cameron ◯ Letta Code

"The map is not the territory, but a good map sure helps you find port 6702."
2026-02-10 20:16:36 -08:00
Cameron
83569d968e fix: add LETTA_AGENT_NAME env var and improve Railway docs (#275) 2026-02-10 19:55:16 -08:00
Cameron
9d684b6a69 fix: resolve TS2349 build error in ask-user-question test (#274) 2026-02-10 19:53:34 -08:00
Charles Packer
9a0dddebcc Update README.md (#276) 2026-02-10 19:52:44 -08:00
Cameron
358339b76b fix: clarify system prompt to prevent duplicate message delivery (#269) 2026-02-10 19:47:13 -08:00
Cameron
39d2667667 feat: AskUserQuestion channel flow support (#272) 2026-02-10 17:58:47 -08:00
Cameron
57f102dfd4 feat: add loom ASCII art startup banner (#270) 2026-02-10 17:57:19 -08:00
ghosttigerllc-bit
28adc22388 feat: add telegram-mtproto channel for user account messaging (#189)
Co-authored-by: Kai <noreply@gtb.ai>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Cameron <cameron@pfiffer.org>
2026-02-10 17:25:44 -08:00
Cameron
8cf9bd230e chore: bump @letta-ai/letta-code-sdk to 0.0.6 (#268) 2026-02-10 16:25:25 -08:00
Charles Packer
c7cb3b723b Merge pull request #260 from letta-ai/feat/disallow-interactive-plan-tools
feat: add disallowed interactive tools config for sessions
2026-02-10 16:20:33 -08:00
cpacker
8a38896928 chore: bump letta code sdk to 0.0.6 and remove stale patches 2026-02-10 16:19:10 -08:00