- 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
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
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
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
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>