EugeneTes
4dc4b5b557
Add Fortress MCP bridge with fortress_ tool prefix and workspace write dir
2026-09-23 19:29:10 +00:00
EugeneTes
3d4ffde3c9
Build Playwright MCP bridge on the generic bridge
2026-09-23 19:29:10 +00:00
EugeneTes
52c4e13d5c
Extract generic stdio MCP bridge with optional tool-name prefix
2026-09-23 19:29:10 +00:00
EugeneTes
231740b32d
Add implementation plan for Fortress MCP bridge
2026-09-23 19:28:23 +00:00
EugeneTes
c078ce8add
Add design spec for Fortress stealth-browser MCP bridge
2026-09-23 19:23:00 +00:00
EugeneTes
f9d84cccac
Truncate voice-transcript echo so Telegram doesn't reject long messages
...
The bot re-emits the transcript back to the owner as a preview
(`🎤 …`). Telegram's sendMessage caps at 4096 chars, so a long audio
message crashed the handler with a 400. Trim the echo to 200 chars
with an ellipsis; the agent still receives the full transcript via
result.input.text.
2026-09-23 14:26:07 +00:00
EugeneTes
a8f838cb61
Wrap device user code in <code> so Telegram taps to copy
2026-09-23 11:00:40 +00:00
EugeneTes
8d663685b3
Document the /connect_calendar flow in README and .env.example
2026-09-23 10:33:20 +00:00
EugeneTes
ee38bd02d5
Wire GoogleTokenStore and DeviceFlowClient into main
2026-09-23 10:29:43 +00:00
EugeneTes
f3c4025b38
Handle thrown exceptions from device-flow complete() in /calendar_done
2026-09-23 10:28:11 +00:00
EugeneTes
279134a305
Add /connect_calendar and /calendar_done bot commands
2026-09-23 10:20:48 +00:00
EugeneTes
2d294995fa
Fix runTool helper in calendar tests to match execute() arity
2026-09-23 10:16:13 +00:00
EugeneTes
ecf61c34e1
Calendar tool reads refresh token from GoogleTokenStore per call
2026-09-23 10:07:50 +00:00
EugeneTes
f765784acb
Make GOOGLE_REFRESH_TOKEN optional in config
2026-09-23 10:03:09 +00:00
EugeneTes
1a4960e5bb
Add Google device-authorization flow client
2026-09-23 09:59:11 +00:00
EugeneTes
e776c32ca3
Add GoogleTokenStore for workspace-local refresh token
2026-09-23 09:55:09 +00:00
EugeneTes
e9c39c5f87
Add implementation plan for Google Calendar connect flow
2026-09-23 09:49:17 +00:00
EugeneTes
6d430b8c0c
Add spec for in-bot Google Calendar connect flow
2026-09-23 09:21:30 +00:00
EugeneTes
288506a390
Add manual E2E entry for forward-with-audio-comment merge
2026-09-23 07:18:26 +00:00
EugeneTes
2004572e5e
Hold debouncer flush while a Telegram message handler is transcribing
2026-09-23 07:13:24 +00:00
EugeneTes
98e1ed2613
Add pending-token API to InputDebouncer
2026-09-23 07:05:09 +00:00
EugeneTes
76bbac2df9
Add implementation plan for forwarded audio + comment merge
...
Three TDD tasks: pending-token API on the debouncer, bracket the
bridge message handler, and one manual E2E line in the README.
2026-09-23 07:02:09 +00:00
EugeneTes
483df6f528
Add spec for merging forwarded audio with its comment
...
Fixes the debouncer race where a fast comment message flushes on its
own before slow audio transcription completes, splitting a single
user turn into two.
2026-09-23 06:58:54 +00:00
EugeneTes
c35d0434ff
Document reply / reply-with-quote support in the README
2026-09-22 08:53:01 +00:00
EugeneTes
bbc8c41118
Pass bot user id into normalizeMessage for reply labelling
2026-09-22 08:51:19 +00:00
EugeneTes
7a53ce379a
Prepend reply header ahead of forward header in normalizeMessage
2026-09-22 08:47:37 +00:00
EugeneTes
38ca7cbfea
Add buildReplyHeader helper with truncation and media descriptors
2026-09-22 08:42:59 +00:00
EugeneTes
0febacfee7
Add reply, quote, and botUserId types to inbound
2026-09-22 08:38:54 +00:00
EugeneTes
90bcb6fd1f
Implementation plan for reply and reply-with-quote context
2026-09-22 08:15:37 +00:00
EugeneTes
99dc906d4e
Design spec: surface reply and reply-with-quote context to the agent
2026-09-22 08:11:40 +00:00
EugeneTes
d1d8b26e22
Debounce inbound messages so forward + comment reach the agent as one turn
...
Telegram sends "forward with a comment" as two separate messages. Buffer
inputs for ~600ms after each arrival and flush a single merged AgentInput;
label forwarded content with its origin so the merged text is intelligible.
2026-09-22 07:51:13 +00:00
EugeneTes
4f2248e24c
Default PLAYWRIGHT_BROWSER to chromium in the image
...
The Dockerfile installs Chromium via `playwright install chromium`, but
Playwright MCP defaults to Chrome (the branded Google build) when no
browser is specified. On a fresh container the launch fails and the
agent falls back to installing Chrome at runtime. Baking the env var
into the image keeps installed browser and default in sync.
2026-09-08 12:45:19 +00:00
EugeneTes
311bdb2eed
Document the send tool in the README
2026-09-08 12:32:59 +00:00
EugeneTes
0a40a6b5fa
Wire send tool into main.ts
2026-09-08 12:29:19 +00:00
EugeneTes
1bda8a2f16
Document the send tool in the system prompt
2026-09-08 12:26:12 +00:00
EugeneTes
f687c1b9a3
Test Pi tool wrapper for send
2026-09-08 12:23:43 +00:00
EugeneTes
202cb001e7
Test oversize photo/document rejection
2026-09-08 12:20:48 +00:00
EugeneTes
f98572b39e
Test explicit kind override for send
2026-09-08 12:18:06 +00:00
EugeneTes
40cb4a8061
Test document routing for non-image extensions
2026-09-08 12:15:46 +00:00
EugeneTes
a6612edc1d
Type send.test.ts mocks against SendBotApi
2026-09-08 12:05:09 +00:00
EugeneTes
c30fccb6d5
Send photos through sendPhoto with auto-detection
2026-09-08 12:03:17 +00:00
EugeneTes
7c806d2d57
Reject missing files and directory paths in send
2026-09-08 11:59:43 +00:00
EugeneTes
3db5844c86
Reject send paths that escape the workspace
2026-09-08 11:55:25 +00:00
EugeneTes
3039f85db8
Add send tool skeleton with schema and factory
2026-09-08 11:51:33 +00:00
EugeneTes
ec87e8dcfd
Add implementation plan for send-attachments tool
2026-09-08 11:49:13 +00:00
EugeneTes
0b2ae39651
Draft design for send-attachments tool
...
Adds a `send` custom tool so the agent can push files and images from the
workspace to the owner as Telegram attachments, closing the gap where the
bot could receive files but only ever reply with text.
2026-09-08 11:40:30 +00:00
EugeneTes
8b22645df4
Pipe MCP subprocess stderr to logger and fix bin lookup key
...
Two review followups:
- Consume the piped stderr from @playwright/mcp so browser-launch
failures surface in our own logs (was set to "pipe" but never read).
- Drop the wrong ["mcp-server-playwright"] lookup; the actual bin key
is "playwright-mcp". Falling through Object.values worked but was
dead code.
2026-09-08 11:00:42 +00:00
EugeneTes
3a43391eb0
Document Playwright MCP env vars and manual E2E steps
2026-09-08 10:56:54 +00:00
EugeneTes
d69d01124d
Install Chromium + deps in image for Playwright MCP
2026-09-08 10:55:34 +00:00
EugeneTes
8106c55e46
Wire Playwright MCP bridge into main.ts startup
2026-09-08 10:52:03 +00:00