Repository navigation
feat(agents): offer installed Letta Code in new-session menus - #1815
Conversation
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).
|
No actionable comments were generated in the recent review.
|
| 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:
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: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passed-
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
#1730and 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#1730but 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.
Comment @coderabbitai help to get the list of available commands.
|
Merge pass: review-work report. Overall: PASSED.
Manual QA
Code review
Gate review
Notes
All required checks are green and no review thread is open. |
Change
herdr 0.9.5 already detects Letta Code (agent kind
letta, from itsletta.tomldetection manifest), andGET /api/agentslists it. The app's supported-agent list left it out, though, so New workspace, New tab with agent… and New worktree hid an installedletta.This PR adds
lettatoSUPPORTED_AGENT_KINDSalong with:/api/agents(server/agents-routes.ts);/and lists skills as bare/<skill-id>rows (letta-code 0.34.23,src/cli/components/SlashCommandAutocomplete.tsx);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 asother. Test (h) inserver/telemetry.test.tslists it as not yet deployed instead of adding it toTELEMETRY_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.jsonlholds 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
server/conversation.ts, the claude stores andshared/protocol.ts(open fix(chat): follow a claude attach pane to its background job's conversation #1813), andserver/dialogs/(open fix(prompt): read an omp multi-select Ask whose hint a narrow pane clips #1814).shared/supported-agents.ts,shared/skill-syntax.ts,docs/guide.md,server/telemetry.test.ts,src/lib/agentLaunchMode.test.tsandsrc/lib/api.test.ts. Whichever PR lands second needs a small rebase that keeps both entries; in the telemetry test that meansundeployed = new Set(["copilot", "letta"]), or fix(agents): offer installed Copilot in new-session menus #1650's mapping.Validation
bun run check fast: passed on the committed tree (workflow syntax, generated types and themes, typecheck, build, unit tests with 0 failures).scripts/changelog-fold.test.ts, everyconventions.test.ts): 115 passed, 0 failed.server/agents-routes.test.tschecks the label.src/lib/api.test.tschecks that Letta is offered where installed, hidden whereinstalled: false, and offered from an older bridge that sends no installation metadata./api/agentsand the create requests intercepted, so nothing launched), 4 of 4 passed:{"agent":{"kind":"letta"}};POST /api/tab/create;installed: false, Letta Code is not offered;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.