main · last commit
13 days ago ·
7g0stsfu
ah-xuc.6 telegram: ports.Notifier implementation (Bot API through HTTPS_PROXY)
Past Stand
bd reopen ah-xuc.6
| Created by | Eugene Blikh |
| Owner | bigbes@gmail.com |
| Created | 2026-07-13T05:15:38Z |
| Started | 2026-07-13T05:44:25Z |
| Updated | 2026-07-13T06:22:50Z |
| Closed | 2026-07-13T06:22:50Z |
New package internal/telegram implementing ports.Notifier. POST {api_base}/bot{token}/sendMessage with JSON {chat_id, text, disable_web_page_preview: true}. http.Client with a 10s timeout whose transport keeps ProxyFromEnvironment semantics so HTTPS_PROXY is honored (Telegram is blocked from the lab network; egress goes through the proxy) — do not build a bare Transport without the Proxy field. Non-2xx responses and ok:false bodies become errors carrying a short body prefix; the bot token must never appear in logs or error strings — redact the URL when wrapping errors. No retries: the reconciler treats Notify as best-effort. api_base comes from config telegram.api_base so tests and e2e can point it at httptest.
go test ./internal/telegram/... green, go vet clean; httptest covers success, HTTP error, ok:false, and token redaction in returned errors; a test asserts proxy resolution from the environment is active
ah-xuc.10
— cmd/agenthubd: wire webhook secret and Telegram notifier
blocks
ah-xuc.1
— Stage 2 foundation: domain buckets/outcome, ports contracts, config surface
blocks
closed
ah-xuc
— Stage 2: webhooks, Task Spec, full buckets, Telegram, srht push, watchdog
parent-child
closed
| id | ah-xuc.6 |
| content_hash | e8c8ca06f34dfebba7004095b3bec4be6a1dd7a6c04bce0af09d4edc831fed76 |
| title | telegram: ports.Notifier implementation (Bot API through HTTPS_PROXY) |
| description | New package internal/telegram implementing ports.Notifier. POST {api_base}/bot{token}/sendMessage with JSON {chat_id, text, disable_web_page_preview: true}. http.Client with a 10s timeout whose transport keeps ProxyFromEnvironment semantics so HTTPS_PROXY is honored (Telegram is blocked from the lab network; egress goes through the proxy) — do not build a bare Transport without the Proxy field. Non-2xx responses and ok:false bodies become errors carrying a short body prefix; the bot token must never appear in logs or error strings — redact the URL when wrapping errors. No retries: the reconciler treats Notify as best-effort. api_base comes from config telegram.api_base so tests and e2e can point it at httptest. |
| design | |
| acceptance_criteria | go test ./internal/telegram/... green, go vet clean; httptest covers success, HTTP error, ok:false, and token redaction in returned errors; a test asserts proxy resolution from the environment is active |
| notes | |
| status | closed |
| priority | 2 |
| issue_type | feature |
| assignee | Eugene Blikh |
| estimated_minutes | NULL |
| created_at | 2026-07-13T05:15:38Z |
| created_by | Eugene Blikh |
| owner | bigbes@gmail.com |
| updated_at | 2026-07-13T06:22:50Z |
| closed_at | 2026-07-13T06:22:50Z |
| closed_by_session | |
| external_ref | NULL |
| spec_id | |
| compaction_level | 0 |
| compacted_at | NULL |
| compacted_at_commit | NULL |
| original_size | NULL |
| sender | |
| ephemeral | 0 |
| wisp_type | |
| pinned | 0 |
| is_template | 0 |
| mol_type | |
| work_type | |
| source_system | |
| metadata | �{} |
| source_repo | |
| close_reason | e15fe4c; token-leak vectors traced to stdlib source and closed; proxy semantics verified empirically; review clean |
| event_kind | |
| actor | |
| target | |
| payload | |
| await_type | |
| await_id | |
| timeout_ns | 0 |
| waiters | |
| hook_bead | |
| role_bead | |
| agent_state | |
| last_activity | NULL |
| role_type | |
| rig | |
| due_at | NULL |
| defer_until | NULL |
| no_history | 0 |
| started_at | 2026-07-13T05:44:25Z |
| is_blocked | 0 |
| id | 8cd2a6e1-5f59-5510-a31a-33777006c01a |
| issue_id | ah-xuc.6 |
| type | blocks |
| created_at | 2026-07-13T08:16:49Z |
| created_by | Eugene Blikh |
| metadata | �{} |
| thread_id | |
| depends_on_issue_id | ah-xuc.1 |
| depends_on_wisp_id | NULL |
| depends_on_external | NULL |
| id | a40dca03-2215-5737-bc0b-af57df910a5f |
| issue_id | ah-xuc.6 |
| type | parent-child |
| created_at | 2026-07-13T08:15:38Z |
| created_by | Eugene Blikh |
| metadata | �{} |
| thread_id | |
| depends_on_issue_id | ah-xuc |
| depends_on_wisp_id | NULL |
| depends_on_external | NULL |
| id | b2da041d-2b3a-5954-b4be-65e7440fcdb1 |
| issue_id | ah-xuc.10 |
| type | blocks |
| created_at | 2026-07-13T08:16:53Z |
| created_by | Eugene Blikh |
| metadata | �{} |
| thread_id | |
| depends_on_issue_id | ah-xuc.6 |
| depends_on_wisp_id | NULL |
| depends_on_external | NULL |
| id | 019f59e6-fe49-70fa-9e6e-f96846f174fb |
| issue_id | ah-xuc.6 |
| event_type | created |
| actor | Eugene Blikh |
| old_value | |
| new_value | |
| comment | NULL |
| created_at | 2026-07-13T08:15:38Z |
| id | 019f5a01-583e-788b-b679-f6a08fc60237 |
| issue_id | ah-xuc.6 |
| event_type | claimed |
| actor | Eugene Blikh |
| old_value | {"id":"ah-xuc.6","title":"telegram: ports.Notifier implementation (Bot API through HTTPS_PROXY)","description":"New package internal/telegram implementing ports.Notifier. POST {api_base}/bot{token}/sendMessage with JSON {chat_id, text, disable_web_page_preview: true}. http.Client with a 10s timeout whose transport keeps ProxyFromEnvironment semantics so HTTPS_PROXY is honored (Telegram is blocked from the lab network; egress goes through the proxy) — do not build a bare Transport without the Proxy field. Non-2xx responses and ok:false bodies become errors carrying a short body prefix; the bot token must never appear in logs or error strings — redact the URL when wrapping errors. No retries: the reconciler treats Notify as best-effort. api_base comes from config telegram.api_base so tests and e2e can point it at httptest.","acceptance_criteria":"go test ./internal/telegram/... green, go vet clean; httptest covers success, HTTP error, ok:false, and token redaction in returned errors; a test asserts proxy resolution from the environment is active","status":"open","priority":2,"issue_type":"feature","owner":"bigbes@gmail.com","created_at":"2026-07-13T05:15:38Z","created_by":"Eugene Blikh","updated_at":"2026-07-13T05:15:38Z"} |
| new_value | {"assignee":"Eugene Blikh","status":"in_progress"} |
| comment | NULL |
| created_at | 2026-07-13T08:44:25Z |
| id | 019f5a24-81dc-7173-8178-88767a97e031 |
| issue_id | ah-xuc.6 |
| event_type | closed |
| actor | Eugene Blikh |
| old_value | |
| new_value | e15fe4c; token-leak vectors traced to stdlib source and closed; proxy semantics verified empirically; review clean |
| comment | NULL |
| created_at | 2026-07-13T09:22:49Z |
| id | 019f7cda-9353-73b5-a6be-c87173961abf |
| issue_id | ah-xuc.6 |
| event_type | label_added |
| actor | Eugene Blikh |
| old_value | NULL |
| new_value | NULL |
| comment | Added label: milestone:stage-2 |
| created_at | 2026-07-20T03:08:47Z |
| id | 019f7cdc-141f-72ca-8059-a68695f12cd7 |
| issue_id | ah-xuc.6 |
| event_type | label_removed |
| actor | Eugene Blikh |
| old_value | NULL |
| new_value | NULL |
| comment | Removed label: milestone:stage-2 |
| created_at | 2026-07-20T03:10:25Z |
No comments.
Close reason