Cameron
6fa8c98924
feat: /cancel slash command to abort active agent runs ( #422 )
2026-02-26 17:14:07 -08:00
Cameron
338665ac48
fix: add env var fallback for heartbeat and cron features ( #421 )
2026-02-26 16:49:55 -08:00
Cameron
7658538b73
feat: add /model slash command to show and switch agent model ( #420 )
2026-02-26 16:47:06 -08:00
Cameron
3bf245a84e
feat: outbound message redaction for secrets and PII ( #416 )
2026-02-26 15:39:49 -08:00
dependabot[bot]
9cf929a716
chore(deps): bump @letta-ai/letta-client from 1.7.8 to 1.7.9 ( #406 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 15:31:02 -08:00
Cameron
fb820ee89a
fix: deduplicate tool_call_ids in orphaned approval recovery ( #414 )
2026-02-26 15:07:33 -08:00
Cameron
9b36d4fca1
fix: remove redundant per-message directive hints from envelope ( #415 )
2026-02-26 15:07:23 -08:00
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