All notable changes to this project will be documented in this file.
Format follows Keep a Changelog. This project adheres to Semantic Versioning.
- BREAKING — project renamed
telek→telegram-agent. The distribution (PyPI) name is nowtelegram-agent, the import package istelegram_agent(e.g.from telegram_agent.cli import main), and the CLI command istelegram-agent(e.g.telegram-agent bot send). Thepython -m telegram_agentmodule entry point follows the package name. - Environment-variable prefix
TELEK_→TELEGRAM_AGENT_(TELEGRAM_AGENT_BOT_TOKEN,TELEGRAM_AGENT_LIVE_TEST_USER_CHAT,TELEGRAM_AGENT_LIVE_TEST_GROUP_CHAT). Update local.envfiles and CI/repo secrets accordingly. - GitHub repo (
agentculture/telegram-agent), SonarCloud project key (agentculture_telegram-agent), and the agent nick / GitHub signature (- telegram-agent (Claude)) all updated to the new name.
learn/explainoutput no longer describes the Telegram surface as unbuilt —bot send,group roster, andgroup pinshipped in 0.2.0, so both commands now list the live domain verbs instead of "planned".- Tagged the freshness-signal fenced code block in the vendored
recallskill (textlanguage) to satisfy markdownlint MD040.
- Reinstall under the new name:
pip install telegram-agent(oruv sync). Rewrite importstelek→telegram_agent, replace thetelekcommand withtelegram-agent, and rename anyTELEK_*environment variables toTELEGRAM_AGENT_*.
- Vendored the
remember+recallmemory skills from eidetic-cli (cite-don't-import) — the write/read halves of eidetic's shared~/.eidetic/memorysurface, so this agent (Claude and its colleague backend) can persist facts across sessions and recall them later, sharing one store.rememberdriveseidetic remember(idempotent upsert of one JSON record or an NDJSON batch on stdin, dedup by id + content hash);recalldriveseidetic recallwith four search modes — exact / approximate / keyword / hybrid — each hit carrying text, full provenance metadata, a relevance score, and a freshness signal. The.shwrappers are byte-verbatim from eidetic-cli (their first-party origin); eachSKILL.mdis localized only in the illustrative--scope <nick>examples (Provenance keeps "First-party to eidetic-cli"). Both default to this agent's PRIVATE scope, reading the suffix fromculture.yaml. Runtime dep: theeideticCLI on PATH (else a local eidetic-cli checkout withuv). Propagated by rollout-cli'seidetic-memoryrecipe.
- Telegram surface (Bot API):
telegram-agent bot send,telegram-agent group roster,telegram-agent group pin. Writes are dry-run by default; pass--applyto commit. Validated-preview dry-run runsgetMe/getChat/getChatMember(plus per-verb permission asserts) before printing the plan, so foot-guns (invalid chat, missing permission, locked group) surface before any side effect. TELEGRAM_AGENT_BOT_TOKENloading from environment or.env(cwd, then nearest git root; process env always wins). World-writable.envfiles are skipped with a warning.- Vendored
.claude/skills/telegram/agent wrapper (SKILL.md + send/roster/ pin scripts). - New optional dependency:
python-telegram-bot>=21,<22under[project.optional-dependencies] telegram. Core install stays zero-dep; install withpip install 'telegram-agent[telegram]'. - Live smoke tests (
tests/test_telegram_live.py, markerlive) covering the fullbot send/group roster/group pincycle against the real Telegram Bot API. Gated onTELEGRAM_AGENT_LIVE_TEST_USER_CHATandTELEGRAM_AGENT_LIVE_TEST_GROUP_CHAT; skipped automatically when either is unset. live-smokeCI job in.github/workflows/tests.ymlthat runs the live suite against repo secrets (TELEGRAM_AGENT_BOT_TOKEN,TELEGRAM_AGENT_LIVE_TEST_USER_CHAT,TELEGRAM_AGENT_LIVE_TEST_GROUP_CHAT). Gated on the token's presence so fork PRs and unconfigured repos are a no-op rather than a hard fail.
group rosteris bot-only by design; the Bot API does not expose full member lists. The response includes alimits.notereminding callers. MTProto support is deferred.
- Initial sibling-scaffold per agentculture/telegram-agent#1:
Python package layout with universal agent-affordance verbs (
telegram-agent learn,telegram-agent explain,telegram-agent whoami); structuredTelegramAgentError+--jsonoutput; vendored baseline skills (cicd,communicate,run-tests,sonarclaude,version-bump) fromagentculture/steward; CI (tests.ymlwith pytest+coverage+lint+SonarCloud-gated scan+version-check,publish.ymlwith Trusted Publishing to TestPyPI/PyPI);sonar-project.propertiesandculture.yamldeclaringtelegram-agentas the agent nick.