Sessions
4 bots registered, 2 online now
- Signal conversation with Max 2 min ago
- Calendar sync + recall save 18 min ago
- Colony relay: forge status 1 hr ago
- Refactor colony transport 5 min ago
- PR review: signal-plugin #42 45 min ago
- Health check debugging 2 hr ago
- Knowledge indexing run 6 hr ago
- Session summary generation 8 hr ago
- Gallery asset pipeline 1 day ago
- Image metadata extraction 1 day ago
- concierge Saved restaurant recommendation to recall 2 min ago
- forge Committed colony transport refactor to main 5 min ago
- concierge Created calendar event dentist Thu 2pm 18 min ago
- forge Opened PR #43 on signal-plugin 45 min ago
- concierge Relayed forge status to Signal 1 hr ago
- historian Indexed 23 knowledge files 6 hr ago
Signal conversation with Max
Here's what's showing at Dendy this weekend:
The Brutalist -- 3h 35min, still running. Sat 1:30pm, Sun 11:00am and 4:15pm. The Brady Corbet one you mentioned wanting to see.
Nosferatu -- back for a limited run. Fri 9:30pm, Sat 9:15pm. Cinema 1 both times so the bigger screen.
Anora -- Sat 6:45pm, Sun 2:00pm. Sean Baker's latest, been getting excellent word of mouth.
The Brutalist is the obvious pick if you haven't caught it yet. Fair warning on the runtime though.
Seats H7 and H8 are both free for Sat 1:30pm. That's your usual row, center pair.
I can't complete the booking from here -- Dendy needs Stripe + reCAPTCHA so you'll have to finish checkout in the browser. Want me to hold these in your cart?
Ruby's calendar shows free from noon onwards on Saturday. No conflicts.
Done. Two tickets in your cart for The Brutalist, Sat 1:30pm, seats H7-H8. Cart link will be in your Dendy account when you're ready to pay.
Reminder set for Saturday 12:45pm: grab snacks before Dendy.
Refactor colony transport
Looked at the current transport setup. The problem is clear: server.ts handles both MCP protocol framing and message routing in the same module. The Codex bridge (codex-live-bridge.ts) bolts on top as a polling workaround.
Plan:
1. Extract a Transport type with send, receive, and subscribe methods
2. Implement StdioTransport for the existing MCP path
3. Implement AppServerTransport for Codex's HTTP injection
4. Keep the message store and routing logic in a shared MessageBus that accepts any transport
Starting with the type definitions and the extraction.
Transport layer extracted. Type-checks clean. The split looks like this:
channel/
transport.ts -- Transport type + MessageBus
transports/
stdio.ts -- MCP stdio (existing behavior)
app-server.ts -- Codex HTTP injection
server.ts -- now just wires transport to MCP handlers
The MessageBus is transport-agnostic. Each transport implements three methods and the bus doesn't care how messages physically move. The Codex bridge becomes a proper transport instead of a polling hack.
One thing worth noting: the old bridge consumed messages on read, which meant if the inject failed the message was lost. The new AppServerTransport uses an ack-based approach -- messages stay unread until the Codex session confirms receipt.
Build passes, all existing tests pass. Committed to main:
refactor: extract colony transport layer Split MCP protocol handling from message routing. Transport is now a pluggable type with stdio and app-server implementations.
Sent status update to colony. The forge-mcp.sh wrapper still works unchanged -- it just creates a StdioTransport under the hood now.