Skip to content

Commit 6926c85

Browse files
zedmorclaude
andcommitted
Add Telegram bridge, session resume, message splitting, and scoped stop
- Add native Telegram bot integration (telegram.rs): send/receive messages, setup wizard, bot token validation, authorized user filtering - Split Telegram messages into 4096-char chunks to respect API limit - Scope `batty stop` to current project only (no longer kills all batty sessions) - Add session resume: `batty stop` writes marker, `batty start` resumes agents - Add channel config with Telegram provider support in comms layer - Update daemon with resume flag, Telegram polling, and message bridging - Update architecture and roadmap docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c8a4178 commit 6926c85

24 files changed

Lines changed: 2303 additions & 350 deletions

.batty/team_config/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
board/

.batty/team_config/events.jsonl

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,58 @@
55
{"event":"agent_spawned","role":"eng-1-2","ts":1773073557}
66
{"event":"agent_spawned","role":"eng-1-3","ts":1773073557}
77
{"event":"agent_spawned","role":"eng-1-4","ts":1773073557}
8+
{"event":"daemon_started","ts":1773195872}
9+
{"event":"agent_spawned","role":"architect","ts":1773195872}
10+
{"event":"agent_spawned","role":"manager","ts":1773195872}
11+
{"event":"agent_spawned","role":"eng-1-1","ts":1773195872}
12+
{"event":"agent_spawned","role":"eng-1-2","ts":1773195872}
13+
{"event":"agent_spawned","role":"eng-1-3","ts":1773195872}
14+
{"event":"agent_spawned","role":"eng-1-4","ts":1773195873}
15+
{"event":"message_routed","from":"architect","to":"manager","ts":1773196360}
16+
{"event":"daemon_started","ts":1773203632}
17+
{"event":"agent_spawned","role":"architect","ts":1773203632}
18+
{"event":"agent_spawned","role":"manager","ts":1773203632}
19+
{"event":"agent_spawned","role":"eng-1-1","ts":1773203633}
20+
{"event":"agent_spawned","role":"eng-1-2","ts":1773203633}
21+
{"event":"agent_spawned","role":"eng-1-3","ts":1773203633}
22+
{"event":"agent_spawned","role":"eng-1-4","ts":1773203633}
23+
{"event":"standup_generated","recipient":"manager","ts":1773204835}
24+
{"event":"task_assigned","role":"eng-1-1","task":"Fix write_launch_script test call sites — missing resume parameter.\n\nThe function write_launch_script in src/team/daemon.rs:1111 now takes 8 arguments (added resume: bool as the 8th parameter), but 5 test call sites still pass only 7 arguments. This breaks the build.\n\nAdd false as the 8th argument (resume) to all 5 test call sites in src/team/daemon.rs:\n\n1. Line ~1423 — launch_script_active_sends_prompt_as_user_message test\n2. Line ~1442 — launch_script_idle_uses_system_prompt test\n3. Line ~1465 — launch_script_idle_codex_uses_context_overlay test\n4. Line ~1494 — launch_script_active_codex_uses_dangerous_flag_and_context_overlay test\n5. Line ~1528 — launch_script_escapes_single_quotes test\n\nEach call currently ends with:\n false, // idle\n)\n\nChange to:\n false, // idle\n false, // resume\n)\n\nAcceptance criteria:\n- cargo test compiles and ALL tests pass\n- cargo fmt --check clean\n- No new warnings in cargo build","ts":1773204926}
25+
{"event":"message_routed","from":"manager","to":"eng-1-1","ts":1773204926}
26+
{"event":"message_routed","from":"manager","to":"architect","ts":1773204934}
27+
{"event":"task_completed","role":"eng-1-1","ts":1773205067}
28+
{"event":"message_routed","from":"eng-1-1","to":"manager","ts":1773205068}
29+
{"event":"message_routed","from":"manager","to":"eng-1-1","ts":1773205096}
30+
{"event":"message_routed","from":"eng-1-1","to":"manager","ts":1773205129}
31+
{"event":"message_routed","from":"architect","to":"manager","ts":1773205153}
32+
{"event":"daemon_stopped","ts":1773205212}
33+
{"event":"daemon_started","ts":1773205263}
34+
{"event":"agent_spawned","role":"architect","ts":1773205264}
35+
{"event":"agent_spawned","role":"manager","ts":1773205264}
36+
{"event":"agent_spawned","role":"eng-1-1","ts":1773205264}
37+
{"event":"agent_spawned","role":"eng-1-2","ts":1773205264}
38+
{"event":"agent_spawned","role":"eng-1-3","ts":1773205264}
39+
{"event":"agent_spawned","role":"eng-1-4","ts":1773205264}
40+
{"event":"daemon_started","ts":1773205487}
41+
{"event":"agent_spawned","role":"architect","ts":1773205487}
42+
{"event":"agent_spawned","role":"manager","ts":1773205487}
43+
{"event":"agent_spawned","role":"eng-1-1","ts":1773205487}
44+
{"event":"agent_spawned","role":"eng-1-2","ts":1773205488}
45+
{"event":"agent_spawned","role":"eng-1-3","ts":1773205488}
46+
{"event":"agent_spawned","role":"eng-1-4","ts":1773205488}
47+
{"event":"daemon_stopped","ts":1773206295}
48+
{"event":"daemon_started","ts":1773206342}
49+
{"event":"agent_spawned","role":"architect","ts":1773206342}
50+
{"event":"agent_spawned","role":"manager","ts":1773206343}
51+
{"event":"agent_spawned","role":"eng-1-1","ts":1773206343}
52+
{"event":"agent_spawned","role":"eng-1-2","ts":1773206343}
53+
{"event":"agent_spawned","role":"eng-1-3","ts":1773206343}
54+
{"event":"agent_spawned","role":"eng-1-4","ts":1773206343}
55+
{"event":"daemon_stopped","ts":1773206417}
56+
{"event":"daemon_started","ts":1773206421}
57+
{"event":"agent_spawned","role":"architect","ts":1773206421}
58+
{"event":"agent_spawned","role":"manager","ts":1773206422}
59+
{"event":"agent_spawned","role":"eng-1-1","ts":1773206422}
60+
{"event":"agent_spawned","role":"eng-1-2","ts":1773206422}
61+
{"event":"agent_spawned","role":"eng-1-3","ts":1773206422}
62+
{"event":"agent_spawned","role":"eng-1-4","ts":1773206422}

.batty/team_config/kanban.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@
55
## In Progress
66

77
## Done
8+
9+
- [x] **TELE-1**: telegram.rs — TelegramBot struct with poll_updates(), send_message(), access control, 13 unit tests
10+
- [x] **TELE-2**: comms.rs — NativeTelegramChannel using telegram::TelegramBot, updated channel_from_config factory, 7 tests
11+
- [x] **TELE-3**: daemon.rs — poll_telegram() + deliver_user_inbox() methods, integrated into main loop, 2 new tests
12+
- [x] **TELE-4**: mod.rs — Registered `pub mod telegram` in src/team/mod.rs
13+
- [x] **TELE-5**: batty telegram CLI subcommand — interactive setup wizard, 6 new tests (287 total)

0 commit comments

Comments
 (0)