Commit Graph

111 Commits

Author SHA1 Message Date
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
EugeneTes
a3ce614171 Plan: fix fakeClient fixture to use live getters 2026-09-08 10:49:55 +00:00
EugeneTes
e190d1c714 Add Playwright MCP bridge module 2026-09-08 10:49:09 +00:00
EugeneTes
a4b50617cc Parse PLAYWRIGHT_* env vars into config.playwright 2026-09-08 10:44:39 +00:00
EugeneTes
82fdef8317 Add @modelcontextprotocol/sdk and @playwright/mcp deps 2026-09-08 10:41:03 +00:00
EugeneTes
9b0a90458c Add implementation plan for Playwright MCP bridge
Seven-task plan: deps → config parsing (TDD) → bridge module (TDD w/
fake MCP client) → main.ts wiring → Dockerfile Chromium install →
docs → verification.
2026-09-08 10:37:50 +00:00
EugeneTes
5b7d344207 Draft design for Playwright MCP bridge
Bridge @playwright/mcp as a stdio subprocess and re-export its tools
as Pi custom tools, gated on PLAYWRIGHT_ENABLED. Uses Type.Unsafe to
pass MCP inputSchema through to the model without hand-mapping.
2026-09-08 10:24:07 +00:00
EugeneTes
d889bd33f5 Ignore scope on plain single events per spec 2026-09-08 08:53:30 +00:00
EugeneTes
ae6485d3f4 Document recurring-event manual E2E check 2026-09-08 08:50:14 +00:00
EugeneTes
e0001ac9d2 Add list_instances action for recurring series 2026-09-08 08:46:02 +00:00