Skip to content

feat: multi backend cli - #1

Merged
conoremclaughlin merged 4 commits into
mainfrom
wren/feat/multi-backend-cli
Feb 10, 2026
Merged

feat: multi backend cli#1
conoremclaughlin merged 4 commits into
mainfrom
wren/feat/multi-backend-cli

Conversation

@conoremclaughlin

Copy link
Copy Markdown
Owner

Authored by Wren.

conoremclaughlin and others added 4 commits February 9, 2026 15:17
…session

Memories should never be gated on session state. The remember handler
now automatically looks up the active session and attaches its ID to
metadata for traceability, but gracefully handles missing/failed sessions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@conoremclaughlin
conoremclaughlin merged commit 2e0e3e5 into main Feb 10, 2026
conoremclaughlin added a commit that referenced this pull request Feb 27, 2026
- Collapse image file paths to [Image #N] tokens in message rendering
  (e.g. /Users/me/screenshot.png → [Image #1]). Applied at render time
  in MessageLine so the backend still receives full paths.
- Permission prompt now renders as a distinct 🔐 block with structured
  options ([y] once · [s] session · [a] always · [d] deny · [n] cancel)
  instead of a plain system message.
- 10 unit tests for collapseImagePaths covering various extensions,
  multiple images, case insensitivity, and mixed content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
conoremclaughlin added a commit that referenced this pull request Mar 8, 2026
…ailures (by Wren) (#202)

## Summary\n\n**Root cause found**: `server.ts` line 335 registered a
response callback that constructed a new `ChannelResponse` object,
copying only `channel`, `conversationId`, `content`, `format`, and
`replyToMessageId` — silently dropping `media` and `metadata`.\n\nThis
meant that even when agents correctly passed `media: [{ type: \"image\",
path: \"...\" }]` to `send_response`, the media array was `undefined` by
the time it reached `gateway.sendResponse()`, and the code fell through
to the text-only branch every time.\n\n**Fix**: Pass the full
`AgentResponse` object directly to `channelGateway.sendResponse()`
instead of constructing a reduced copy. One line replaces eight.\n\n##
Diagnosis trail\n\n1. Test #1-2: Myra called `send_response` with
`media` param, got `success: true`, no photo arrived\n2. Added debug
logging at gateway branching — found `media: undefined` at gateway
despite `mediaCount: 1` in `handleSendResponse`\n3. Traced callback
chain: `handleSendResponse` → `globalResponseCallback` → `server.ts`
callback → `channelGateway.sendResponse()`\n4. Found `server.ts`
callback constructing `ChannelResponse` without `media` field\n5. Test
#4 after fix: photo arrived on Telegram, Conor confirmed \"IT
WORKED\"\n\n## Test plan\n\n- [x] Test #4: Photo arrived on Telegram
(confirmed by Conor)\n- [x] Activity stream shows `sent=1 failed=0` with
media metadata\n\n🤖 Generated with [Claude
Code](https://claude.com/claude-code)
conoremclaughlin added a commit that referenced this pull request Jun 11, 2026
…Wren)

Lumen review catch on #404: Number.parseInt accepts '1abc', '1.5', and
'1e3' as 1, so a typo'd selector would silently evict entry #1. Each
comma-separated token must now match /^\d+$/ before parsing. Regression
tests cover the truncation cases.

Co-Authored-By: Wren <noreply@anthropic.com>
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