Commit Graph

408 Commits

Author SHA1 Message Date
Cameron
723ba2670f fix: accumulate tool call arguments even when toolCallId is missing (#413) 2026-02-26 15:03:47 -08:00
Cameron
d11777a1a2 feat: per-agent workingDir config (#412) 2026-02-26 14:22:16 -08:00
Cameron
a3bb102381 fix: resolve stream queue contamination causing N-1 desync and silent mode leak (#411) 2026-02-26 14:00:18 -08:00
Cameron
325136ace3 feat: per-agent allowedTools and disallowedTools config (#410) 2026-02-26 13:50:58 -08:00
Cameron
64a0e4b7d8 feat: add sendFile support to Signal channel adapter (#407) 2026-02-26 11:18:47 -08:00
Cameron
a167679dec fix: enforce runtime console lint in CI (#409) 2026-02-26 10:50:50 -08:00
Cameron
955bdacab7 fix: merge env var credentials into YAML channel blocks and warn on silent skip (#408) 2026-02-26 10:48:14 -08:00
Cameron
d283f837ac refactor: migrate runtime console.log calls to structured logger (#397) 2026-02-26 10:16:38 -08:00
Sarah Wooders
673cb5100e feat: tag new agents with origin:lettabot (#405)
Co-authored-by: Letta <noreply@letta.com>
2026-02-25 18:22:14 -08:00
Cameron
e96ddc1db1 feat: add voice memo responses via TTS (#394) 2026-02-25 16:47:33 -08:00
Cameron
7000560f2f docs: add LETTABOT_MEMFS to .env.example (#404)
Co-authored-by: Letta <noreply@letta.com>
2026-02-25 16:29:37 -08:00
Cameron
3c7352274e refactor: deduplicate sleep helpers into src/utils (#399) 2026-02-25 14:29:31 -08:00
Cameron
07d6939ead refactor: deduplicate parse helpers into src/utils (#398) 2026-02-25 14:27:06 -08:00
Cameron
0d5afd6326 fix: enrich sendToAgent() error messages with run metadata (#396) 2026-02-25 10:40:45 -08:00
Cameron
cdfb7e1cd5 docs: add OpenAI-compatible API documentation (#395) 2026-02-25 10:40:41 -08:00
Cameron
b6394fb3a5 feat: client-side tool call accumulation in dedupedStream (#389) 2026-02-24 16:16:53 -08:00
Cameron
1c078421c8 docs: add Open WebUI setup guide (#390) 2026-02-24 15:49:23 -08:00
Cameron
1eb729d9fd fix: check apiError.message in non-retryable error detection (#387) 2026-02-24 12:25:34 -08:00
Cameron
d33a280d77 feat: add reaction support for Signal channel (#353) 2026-02-24 12:05:51 -08:00
Cameron
cb3a49b42b fix(core): make /reset safe across conversation keys and in-flight sessions (#386) 2026-02-24 12:00:00 -08:00
Cameron
9975568831 feat(core): proactive approval detection via SDK bootstrapState() (#383) 2026-02-24 11:58:44 -08:00
Cameron
b5e44e493a fix: skip retry/recovery for non-retryable API errors (#384) 2026-02-24 11:47:36 -08:00
dependabot[bot]
623532292c chore(deps): bump @letta-ai/letta-code-sdk from 0.1.2 to 0.1.6 (#380)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-24 11:22:32 -08:00
Jason Carreira
69b3d165d6 Add per-channel conversation overrides (#340)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Cameron <cameron@pfiffer.org>
2026-02-24 11:14:26 -08:00
Cameron
266ded012c fix: custom tool call display with pretty verb headers (#369) 2026-02-24 10:45:04 -08:00
Cameron
43f9b332cd fix(api): surface failed stream results and validate content types (#379) 2026-02-23 17:11:31 -08:00
Cameron
1c083201c3 feat: OpenAI-compatible /v1/chat/completions endpoint (#328) 2026-02-23 16:52:29 -08:00
Cameron
1cad6e6508 feat(core): structured logging with pino (#368) 2026-02-23 16:35:23 -08:00
Cameron
1ce869e5b7 fix(core): gate directive execution in listening mode and anchor paths to workingDir (#371) 2026-02-23 16:28:54 -08:00
Jason Carreira
1fbd6d5a2e Add send-file directive and Discord/CLI file support (#319)
Co-authored-by: Jason Carreira <jason@visotrust.com>
Co-authored-by: Cameron <cameron@pfiffer.org>
Co-authored-by: Charles Packer <packercharles@gmail.com>
Co-authored-by: Sarah Wooders <sarahwooders@gmail.com>
Co-authored-by: Letta <noreply@letta.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 15:44:34 -08:00
Cameron
ad4c22ba54 fix(whatsapp): fix encryption retries, session lifecycle, and group defaults (#358)
- Fix getMessage callback to return proto.IMessage for delivery retries
- Store incoming messages in messageStore for bidirectional retry
- Stop calling sock.logout() on server stop (was destroying credentials)
- Suppress noisy stack traces, surface actual disconnect reason
- Remove auto-clearing of credentials on connection failures
- Raise session failure threshold from 3 to 8
- Default group behavior to disabled when no groups config

Written by Cameron and Letta Code
2026-02-23 15:22:38 -08:00
Cameron
b1f72e0150 fix: auto-resolve LETTABOT_API_KEY from lettabot-api.json (#367) 2026-02-23 15:04:25 -08:00
Cameron
7028f042af fix: display-reasoning stream fixes and Signal compatibility (#355) 2026-02-23 15:00:17 -08:00
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