Commit fcdafca
committed
feat: Tier 3-4 — communication channels & productivity skills
Communication channels:
- Telegram bot (long polling, no external deps, net/http only)
- Bidirectional messaging with typing indicators
- Chat ID allowlist for security
- Auto-retry on Markdown parse failures
- Message chunking for >4096 char responses
- /start and /health commands
- Webhook endpoint (POST /api/webhooks)
- HMAC-SHA256 signature verification (GitHub compatible)
- Sync and async modes
- Plain text fallback for non-JSON payloads
- Email notifications (net/smtp, no external deps)
- SMTP sender with configurable host/port/auth
- send_email skill for agent-initiated emails
Productivity skills:
- Task management: task_add, task_list, task_update, task_delete
- JSON file storage, priority sorting, tag filtering
- Status tracking (todo/in_progress/done)
- Note-taking/PKM: note_save, note_read, note_list, note_delete, note_search
- Markdown files in data/notes/
- Full-text search with snippet extraction
- Path traversal protection via sanitization
Config additions:
- WebhookChannelConfig (enabled, HMAC secret)
- EmailConfig (SMTP host/port/username/password/from)
- Env var resolution for webhook secret and email password
Zero new external dependencies — all implemented with Go stdlib.1 parent affa876 commit fcdafca
9 files changed
Lines changed: 1427 additions & 2 deletions
File tree
- cmd/pennyclaw
- internal
- agent
- channels
- telegram
- webhook
- web
- config
- notify
- skills
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
| 17 | + | |
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
| |||
74 | 76 | | |
75 | 77 | | |
76 | 78 | | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
77 | 88 | | |
78 | 89 | | |
79 | | - | |
| 90 | + | |
80 | 91 | | |
81 | 92 | | |
82 | 93 | | |
83 | 94 | | |
84 | 95 | | |
85 | 96 | | |
86 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
87 | 113 | | |
88 | 114 | | |
89 | 115 | | |
90 | 116 | | |
91 | 117 | | |
92 | 118 | | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
93 | 122 | | |
94 | 123 | | |
95 | 124 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| |||
110 | 111 | | |
111 | 112 | | |
112 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
113 | 132 | | |
114 | 133 | | |
115 | 134 | | |
| |||
0 commit comments