Skip to content

feat(agents): offer installed Letta Code in new-session menus - #1815

Merged
devswha merged 1 commit into
mainfrom
feat/letta-code-support
Oct 24, 2026
Merged

devswha merged 1 commit into
mainfrom
feat/letta-code-support

Conversation

@devswha

@devswha devswha commented Oct 24, 2026

Copy link
Copy Markdown
Owner

Change

herdr 0.9.5 already detects Letta Code (agent kind letta, from its letta.toml detection manifest), and GET /api/agents lists it. The app's supported-agent list left it out, though, so New workspace, New tab with agent… and New worktree hid an installed letta.

This PR adds letta to SUPPORTED_AGENT_KINDS along with:

  • the label Letta Code in /api/agents (server/agents-routes.ts);
  • a skill-syntax row. Letta's slash menu opens only on a leading / and lists skills as bare /<skill-id> rows (letta-code 0.34.23, src/cli/components/SlashCommandAutocomplete.tsx);
  • a Supported agents row in the guide and a changelog fragment.

There is no new UI: the existing picker lists one more agent, with the fallback letter mark (lobe-icons has no Letta mark). The launch uses the existing generic path and adds no permission flags. A first message waits for the first ready turn, because Letta takes a prompt on its command line only with -p (its headless mode).

Telemetry: the deployed Worker refuses a harness it does not list (telemetryHarnesses, telemetry/deployed.json), so Letta counts as other. Test (h) in server/telemetry.test.ts lists it as not yet deployed instead of adding it to TELEMETRY_HARNESSES, so no Worker deploy is needed.

No native chat reader yet. In its default mode, Letta keeps the conversation on the Letta server. Locally, ~/.letta/sessions.jsonl holds only session metadata. Chat shows the terminal's text until a follow-up reads it. The storage findings are in #1730 (comment).

Part of #1730 (the picker; the issue stays open for the reader, prompts and session history).

Scope notes

Validation

  • bun run check fast: passed on the committed tree (workflow syntax, generated types and themes, typecheck, build, unit tests with 0 failures).
  • Focused tests (the touched files, scripts/changelog-fold.test.ts, every conventions.test.ts): 115 passed, 0 failed. server/agents-routes.test.ts checks the label. src/lib/api.test.ts checks that Letta is offered where installed, hidden where installed: false, and offered from an older bridge that sends no installation metadata.
  • Browser check on the demo build over its fixture transport (no herdr session; /api/agents and the create requests intercepted, so nothing launched), 4 of 4 passed:
    • New workspace offers Letta Code and not an unsupported kind, and Start sends {"agent":{"kind":"letta"}};
    • New tab with agent… does the same through POST /api/tab/create;
    • with installed: false, Letta Code is not offered;
    • the picker at 1440×900 and 390×844 (dark) shows the Letta Code row unclipped.
  • A separate code-review agent found no blockers. Its two fixes are applied: a test assertion that passed without the change was dropped, and the guide and changelog now name New worktree too.

Not run: launching a real letta (it is not installed here), so a first message sent to a live Letta pane has not been tried end to end. The generic pending path holds such a message until herdr reports the pane ready, and the user can always send or discard it.

herdr already reports Letta Code (agent kind letta) in its agent manifests,
but the app's supported-agent list left it out, so New workspace, New tab
with agent... and New worktree hid an installed letta. Add it with its
label, a skill-syntax row, a guide row and a changelog fragment.

Letta counts as the telemetry harness "other" until the receiver lists it.
Chat keeps the terminal's text: Letta keeps its conversation on the Letta
server, so a native reader is a follow-up (#1730).
@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 5c6a072 and 98d4b2d.

Files selected for processing: 9
  • changelog.d/letta-agent-menu.md
  • docs/guide.md
  • server/agents-routes.test.ts
  • server/agents-routes.ts
  • server/telemetry.test.ts
  • shared/skill-syntax.ts
  • shared/supported-agents.ts
  • src/lib/agentLaunchMode.test.ts
  • src/lib/api.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.

📝 Summary

Summary by CodeRabbit

  • New Features

    • Letta Code is now available in the agent picker for new workspaces, tabs, and worktrees when installed. You can also start it from a pane’s terminal by running letta.
    • Letta Code’s chat currently displays terminal text.
    • Skill suggestions appear when you enter / and list skill IDs.
  • Documentation

    • Added Letta Code setup and usage details to the guide.

The change adds Letta Code to the supported-agent list and agent discovery. It also adds skill syntax configuration, updates compatibility tests, and documents how to start Letta Code and what its chat displays.

Changes: Letta Code support

Layer / File(s) Summary
Register Letta Code in agent discovery
shared/*, server/agents-routes*, server/telemetry.test.ts, src/lib/*, docs/guide.md, changelog.d/letta-agent-menu.md
The supported-agent list, skill syntax, and server label include Letta Code. Tests cover agent response labels, installation filtering, endpoint selection, telemetry mapping, and launch capabilities. The guide and changelog describe its availability and terminal-text chat.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Possibly related issues

  • Issue 1730 requests Letta pane support. This change adds Letta Code to agent discovery, while transcript, prompt, and session-history behavior remains outside its described scope.

Possibly related PRs

  • devswha/ovis#1690: This change adds the Letta Code label to the agent catalog implementation moved in that PR.
Merge Risk: Minimal · up to 98d4b

No actionable regression was found in the reviewed changes; the remaining manifest-producer behavior is external to this PR.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 7 files. (2 skipped: 2 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title "feat(agents): offer installed Letta Code in new-session menus" matches the main change: adding letta to SUPPORTED_AGENT_KINDS so an installed Letta Code appears in the New workspace, New ta…
Description check Passed The description follows the template. The Change section describes the problem (installed letta hidden from new-session menus), the resulting behavior, the files touched, and the telemetry and chat-re…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title "feat(agents): offer installed Letta Code in new-session menus" matches the main change: adding letta to SUPPORTED_AGENT_KINDS so an installed Letta Code appears in the New workspace, New tab with agent, and New worktree menus. It follows conventional-commit style and is specific.

Full details: Description check

Explanation

The description follows the template. The Change section describes the problem (installed letta hidden from new-session menus), the resulting behavior, the files touched, and the telemetry and chat-reader limits. It links the related issue #1730 and the storage findings comment. The Validation section lists the checks run, the focused tests, the browser checks, and what was not run. The template asks for a feature to link the issue where a maintainer agreed to it. The description links #1730 but does not show that a maintainer agreed to the picker scope, so this is a minor gap. The description is mostly complete.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 7 files. (2 skipped: 2 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devswha

devswha commented Oct 24, 2026

Copy link
Copy Markdown
Owner Author

Merge pass: review-work report. Overall: PASSED.

Lane Verdict Confidence
Manual QA (5 rows, artifacts kept) PASS, plus 1 note -
Code review: omo-native-code-reviewer with programming and remove-ai-slops PASS (CLEAR, no blocker or major) -
Gate review: fresh reviewer on another model APPROVE MEDIUM

Manual QA

  • 93 tests pass, and the typecheck passes.
  • The label test and the menu test fail on main's production files.
  • Real check: an isolated herdr 0.9.5 and a server built from this head. GET /api/agents answers 200 with 25 agents, including {"kind":"letta","label":"Letta Code","installed":false}, so herdr does report the kind.

Code review

  • Only the menu filter reads SUPPORTED_AGENT_KINDS; every other path follows herdr's pane agent.
  • Launch passes no flags.
  • A first message waits until herdr reports letta ready, and an unknown status holds it for the user.
  • There is no chat reader yet, so the pane shows terminal text.
  • Telemetry counts it as other, so no Worker deploy is needed.
  • The icon uses the fallback.

Gate review

  • 192 tests pass, and both typechecks pass.
  • Letta probes covered prompt-shaped flags, multiline and blank prompts, pending states, holding on disconnect, composer syntax and the telemetry mapping.

Notes

All required checks are green and no review thread is open.

@devswha
devswha merged commit a3267e6 into main Oct 24, 2026
17 checks passed
@devswha
devswha deleted the feat/letta-code-support branch October 24, 2026 07:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant