coding-agent-telegram 2026.3.26__tar.gz → 2026.3.27__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- coding_agent_telegram-2026.3.27/.github/workflows/pull-request-checks.yml +45 -0
- coding_agent_telegram-2026.3.27/.github/workflows/python-publish.yml +95 -0
- coding_agent_telegram-2026.3.27/.github/workflows/testpypi-publish.yml +84 -0
- coding_agent_telegram-2026.3.27/.gitignore +14 -0
- coding_agent_telegram-2026.3.27/.gitkeep +0 -0
- {coding_agent_telegram-2026.3.26/src/coding_agent_telegram.egg-info → coding_agent_telegram-2026.3.27}/PKG-INFO +32 -12
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/README.md +30 -10
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/pyproject.toml +8 -3
- coding_agent_telegram-2026.3.27/src/coding_agent_telegram/__init__.py +1 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/agent_runner.py +198 -41
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/bot.py +27 -2
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/cli.py +7 -5
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/config.py +24 -3
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/diff_utils.py +38 -3
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/git_utils.py +24 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/resources/.env.example +13 -3
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/resources/sensitive_path_globs.txt +1 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/resources/snapshot_excluded_dir_globs.txt +0 -3
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/resources/snapshot_excluded_dir_names.txt +2 -0
- coding_agent_telegram-2026.3.27/src/coding_agent_telegram/resources/snapshot_excluded_file_globs.txt +2 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/router/base.py +145 -6
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/router/git_commands.py +45 -6
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/router/message_commands.py +10 -1
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/router/project_commands.py +95 -47
- coding_agent_telegram-2026.3.27/src/coding_agent_telegram/router/session_commands.py +494 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/session_runtime.py +15 -3
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/session_store.py +18 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/telegram_sender.py +90 -25
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27/src/coding_agent_telegram.egg-info}/PKG-INFO +32 -12
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram.egg-info/SOURCES.txt +8 -0
- coding_agent_telegram-2026.3.27/startup.sh +169 -0
- coding_agent_telegram-2026.3.27/tests/conftest.py +4 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_agent_runner.py +127 -15
- coding_agent_telegram-2026.3.27/tests/test_bot.py +19 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_command_router.py +595 -22
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_config.py +49 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_diff_chunking.py +54 -13
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_filters.py +1 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_git_utils.py +60 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_session_store.py +24 -0
- coding_agent_telegram-2026.3.27/tests/test_telegram_sender.py +91 -0
- coding_agent_telegram-2026.3.26/src/coding_agent_telegram/__init__.py +0 -4
- coding_agent_telegram-2026.3.26/src/coding_agent_telegram/resources/snapshot_excluded_file_globs.txt +0 -4
- coding_agent_telegram-2026.3.26/src/coding_agent_telegram/router/session_commands.py +0 -197
- coding_agent_telegram-2026.3.26/tests/test_telegram_sender.py +0 -43
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/LICENSE +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/setup.cfg +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/setup.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/__main__.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/command_router.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/filters.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/logging_utils.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram/router/__init__.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram.egg-info/dependency_links.txt +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram.egg-info/entry_points.txt +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram.egg-info/requires.txt +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/src/coding_agent_telegram.egg-info/top_level.txt +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_agent_runner_stall.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_project_validation.py +0 -0
- {coding_agent_telegram-2026.3.26 → coding_agent_telegram-2026.3.27}/tests/test_session_runtime_diff_merge.py +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Pull Request Checks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test-and-build:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
env:
|
|
13
|
+
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_CODING_AGENT_TELEGRAM: 0.0.dev0
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.x"
|
|
23
|
+
|
|
24
|
+
- name: Install test and build dependencies
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
python -m pip install pytest build twine setuptools-scm
|
|
28
|
+
python -m pip install -e .
|
|
29
|
+
|
|
30
|
+
- name: Run tests
|
|
31
|
+
run: pytest
|
|
32
|
+
|
|
33
|
+
- name: Build release distributions
|
|
34
|
+
run: python -m build
|
|
35
|
+
|
|
36
|
+
- name: Validate package metadata
|
|
37
|
+
run: python -m twine check dist/*
|
|
38
|
+
|
|
39
|
+
- name: Smoke test built wheel
|
|
40
|
+
run: |
|
|
41
|
+
python -m venv .smoke-test-venv
|
|
42
|
+
source .smoke-test-venv/bin/activate
|
|
43
|
+
python -m pip install --upgrade pip
|
|
44
|
+
python -m pip install --no-deps dist/*.whl
|
|
45
|
+
python -c "import coding_agent_telegram"
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# This workflow will upload a Python Package to PyPI when a release is created
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
|
|
3
|
+
|
|
4
|
+
# This workflow uses actions that are not certified by GitHub.
|
|
5
|
+
# They are provided by a third-party and are governed by
|
|
6
|
+
# separate terms of service, privacy policy, and support
|
|
7
|
+
# documentation.
|
|
8
|
+
|
|
9
|
+
name: Upload Python Package
|
|
10
|
+
|
|
11
|
+
on:
|
|
12
|
+
release:
|
|
13
|
+
types: [published]
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
release-build:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
|
|
27
|
+
- uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.x"
|
|
30
|
+
|
|
31
|
+
- name: Verify PyPI version
|
|
32
|
+
run: |
|
|
33
|
+
python -m pip install setuptools-scm
|
|
34
|
+
VERSION="$(python -m setuptools_scm)"
|
|
35
|
+
echo "Derived version: $VERSION"
|
|
36
|
+
if [[ "$VERSION" == *".dev"* ]]; then
|
|
37
|
+
echo "PyPI publishing does not allow .dev versions." >&2
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
- name: Run tests
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install pytest
|
|
44
|
+
python -m pip install -e .
|
|
45
|
+
pytest
|
|
46
|
+
|
|
47
|
+
- name: Build release distributions
|
|
48
|
+
run: |
|
|
49
|
+
python -m pip install build
|
|
50
|
+
python -m build
|
|
51
|
+
|
|
52
|
+
- name: Smoke test built wheel
|
|
53
|
+
run: |
|
|
54
|
+
python -m venv .smoke-test-venv
|
|
55
|
+
source .smoke-test-venv/bin/activate
|
|
56
|
+
python -m pip install --upgrade pip
|
|
57
|
+
python -m pip install --no-deps dist/*.whl
|
|
58
|
+
python -c "import coding_agent_telegram"
|
|
59
|
+
|
|
60
|
+
- name: Upload distributions
|
|
61
|
+
uses: actions/upload-artifact@v4
|
|
62
|
+
with:
|
|
63
|
+
name: release-dists
|
|
64
|
+
path: dist/
|
|
65
|
+
|
|
66
|
+
pypi-publish:
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
needs:
|
|
69
|
+
- release-build
|
|
70
|
+
permissions:
|
|
71
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
72
|
+
id-token: write
|
|
73
|
+
|
|
74
|
+
# Dedicated environments with protections for publishing are strongly recommended.
|
|
75
|
+
# For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
|
|
76
|
+
environment:
|
|
77
|
+
name: pypi
|
|
78
|
+
# OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
|
|
79
|
+
# url: https://pypi.org/p/YOURPROJECT
|
|
80
|
+
#
|
|
81
|
+
# ALTERNATIVE: if your GitHub Release name is the PyPI project version string
|
|
82
|
+
# ALTERNATIVE: exactly, uncomment the following line instead:
|
|
83
|
+
# url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}
|
|
84
|
+
|
|
85
|
+
steps:
|
|
86
|
+
- name: Retrieve release distributions
|
|
87
|
+
uses: actions/download-artifact@v4
|
|
88
|
+
with:
|
|
89
|
+
name: release-dists
|
|
90
|
+
path: dist/
|
|
91
|
+
|
|
92
|
+
- name: Publish release distributions to PyPI
|
|
93
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
94
|
+
with:
|
|
95
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# This workflow will upload a Python package to TestPyPI for dev tags.
|
|
2
|
+
|
|
3
|
+
name: Upload Python Package to TestPyPI
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
push:
|
|
8
|
+
tags:
|
|
9
|
+
- "v*.dev*"
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
release-build:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
with:
|
|
21
|
+
fetch-depth: 0
|
|
22
|
+
|
|
23
|
+
- uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.x"
|
|
26
|
+
|
|
27
|
+
- name: Verify TestPyPI version
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install setuptools-scm
|
|
30
|
+
VERSION="$(python -m setuptools_scm)"
|
|
31
|
+
echo "Derived version: $VERSION"
|
|
32
|
+
if [[ "$VERSION" != *".dev"* ]]; then
|
|
33
|
+
echo "TestPyPI publishing requires a .dev version." >&2
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
- name: Run tests
|
|
38
|
+
run: |
|
|
39
|
+
python -m pip install pytest
|
|
40
|
+
python -m pip install -e .
|
|
41
|
+
pytest
|
|
42
|
+
|
|
43
|
+
- name: Build release distributions
|
|
44
|
+
run: |
|
|
45
|
+
python -m pip install build
|
|
46
|
+
python -m build
|
|
47
|
+
|
|
48
|
+
- name: Smoke test built wheel
|
|
49
|
+
run: |
|
|
50
|
+
python -m venv .smoke-test-venv
|
|
51
|
+
source .smoke-test-venv/bin/activate
|
|
52
|
+
python -m pip install --upgrade pip
|
|
53
|
+
python -m pip install --no-deps dist/*.whl
|
|
54
|
+
python -c "import coding_agent_telegram"
|
|
55
|
+
|
|
56
|
+
- name: Upload distributions
|
|
57
|
+
uses: actions/upload-artifact@v4
|
|
58
|
+
with:
|
|
59
|
+
name: release-dists
|
|
60
|
+
path: dist/
|
|
61
|
+
|
|
62
|
+
testpypi-publish:
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
needs:
|
|
65
|
+
- release-build
|
|
66
|
+
permissions:
|
|
67
|
+
id-token: write
|
|
68
|
+
environment:
|
|
69
|
+
name: testpypi
|
|
70
|
+
# OPTIONAL: uncomment and update to include your TestPyPI project URL in the deployment status:
|
|
71
|
+
# url: https://test.pypi.org/project/coding-agent-telegram/
|
|
72
|
+
|
|
73
|
+
steps:
|
|
74
|
+
- name: Retrieve release distributions
|
|
75
|
+
uses: actions/download-artifact@v4
|
|
76
|
+
with:
|
|
77
|
+
name: release-dists
|
|
78
|
+
path: dist/
|
|
79
|
+
|
|
80
|
+
- name: Publish release distributions to TestPyPI
|
|
81
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
82
|
+
with:
|
|
83
|
+
repository-url: https://test.pypi.org/legacy/
|
|
84
|
+
packages-dir: dist/
|
|
File without changes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: coding-agent-telegram
|
|
3
|
-
Version: 2026.3.
|
|
3
|
+
Version: 2026.3.27
|
|
4
4
|
Summary: Telegram bot bridge for local coding agents (Codex/Copilot CLI)
|
|
5
|
-
Author:
|
|
5
|
+
Author: DCHA
|
|
6
6
|
License: MIT
|
|
7
7
|
Requires-Python: >=3.9
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
@@ -89,15 +89,16 @@ cd coding-agent-telegram
|
|
|
89
89
|
|
|
90
90
|
What `startup.sh` does:
|
|
91
91
|
|
|
92
|
-
- creates `.
|
|
92
|
+
- creates `.env_coding_agent_telegram` from `src/coding_agent_telegram/resources/.env.example` if missing
|
|
93
|
+
- falls back to legacy `.env` if it already exists
|
|
93
94
|
- creates the state files if missing
|
|
94
95
|
- creates `.venv` if missing
|
|
95
96
|
- installs the package into the virtual environment
|
|
96
97
|
- starts the Telegram bot server
|
|
97
98
|
|
|
98
|
-
#### 3. Update
|
|
99
|
+
#### 3. Update The Env File
|
|
99
100
|
|
|
100
|
-
On first run, update the required fields in `.
|
|
101
|
+
On first run, update the required fields in `.env_coding_agent_telegram`:
|
|
101
102
|
|
|
102
103
|
- `WORKSPACE_ROOT`
|
|
103
104
|
- `TELEGRAM_BOT_TOKENS`
|
|
@@ -118,9 +119,10 @@ coding-agent-telegram
|
|
|
118
119
|
|
|
119
120
|
What happens on first run:
|
|
120
121
|
|
|
121
|
-
- the command creates `.
|
|
122
|
+
- the command creates `.env_coding_agent_telegram` in your current working directory if missing
|
|
123
|
+
- if legacy `.env` already exists, it reuses that instead
|
|
122
124
|
- it tells you which required fields to update
|
|
123
|
-
- after updating
|
|
125
|
+
- after updating the env file, run `coding-agent-telegram` again
|
|
124
126
|
|
|
125
127
|
Recommended flow:
|
|
126
128
|
|
|
@@ -131,7 +133,7 @@ pip install coding-agent-telegram
|
|
|
131
133
|
coding-agent-telegram
|
|
132
134
|
```
|
|
133
135
|
|
|
134
|
-
Then update `.
|
|
136
|
+
Then update `.env_coding_agent_telegram` and run:
|
|
135
137
|
|
|
136
138
|
```bash
|
|
137
139
|
coding-agent-telegram
|
|
@@ -157,7 +159,7 @@ If an unsupported message type is sent, the bot replies with a short error inste
|
|
|
157
159
|
|
|
158
160
|
## ⚙️ Environment Variables
|
|
159
161
|
|
|
160
|
-
These are the main fields in `.env`.
|
|
162
|
+
These are the main fields in the resolved env file, which defaults to `.env_coding_agent_telegram` and falls back to legacy `.env`.
|
|
161
163
|
|
|
162
164
|
### Required
|
|
163
165
|
|
|
@@ -282,7 +284,7 @@ GitHub documents these Copilot CLI approval controls here:
|
|
|
282
284
|
- `ENABLE_SENSITIVE_DIFF_FILTER`
|
|
283
285
|
Hide diffs for sensitive paths.
|
|
284
286
|
|
|
285
|
-
### Example
|
|
287
|
+
### Example Env Snippet
|
|
286
288
|
|
|
287
289
|
```env
|
|
288
290
|
WORKSPACE_ROOT=~/git
|
|
@@ -376,7 +378,6 @@ _During each agent run, the bot also takes a lightweight before/after project sn
|
|
|
376
378
|
|
|
377
379
|
- the app walks the project directory before and after the run
|
|
378
380
|
- for normal text files, the app prefers the per-run snapshot diff rather than a git-head diff
|
|
379
|
-
- `hidden files` and `hidden directories` are skipped by the snapshot walker by default, git-head diff will be used instead
|
|
380
381
|
- common dependency, cache, and runtime directories are also skipped
|
|
381
382
|
- binary files and files larger than `SNAPSHOT_TEXT_FILE_MAX_BYTES` are not loaded as text
|
|
382
383
|
- for huge projects, this extra scan can add noticeable I/O and memory overhead
|
|
@@ -389,7 +390,18 @@ Snapshot exclusion rules live in package resource files:
|
|
|
389
390
|
- `src/coding_agent_telegram/resources/snapshot_excluded_dir_globs.txt`
|
|
390
391
|
- `src/coding_agent_telegram/resources/snapshot_excluded_file_globs.txt`
|
|
391
392
|
|
|
392
|
-
|
|
393
|
+
You can override those defaults in the env file without editing the installed package:
|
|
394
|
+
|
|
395
|
+
- `SNAPSHOT_INCLUDE_PATH_GLOBS`
|
|
396
|
+
Force-include matching paths in diffs.
|
|
397
|
+
Example: `.github/*,.profile.test,.profile.prod`
|
|
398
|
+
|
|
399
|
+
- `SNAPSHOT_EXCLUDE_PATH_GLOBS`
|
|
400
|
+
Add extra diff exclusions on top of the packaged defaults.
|
|
401
|
+
Example: `.*,personal/*,sensitive*.txt`
|
|
402
|
+
Note: `.*` matches hidden paths, including files inside hidden directories.
|
|
403
|
+
|
|
404
|
+
If both include and exclude rules match, the include rule wins.
|
|
393
405
|
|
|
394
406
|
## 🌿 Branch Workflow
|
|
395
407
|
|
|
@@ -454,6 +466,14 @@ Typical logged events:
|
|
|
454
466
|
- `pyproject.toml`
|
|
455
467
|
Packaging and dependency configuration
|
|
456
468
|
|
|
469
|
+
## 📦 Release Versioning
|
|
470
|
+
|
|
471
|
+
Package versions are derived from Git tags.
|
|
472
|
+
|
|
473
|
+
- TestPyPI/testing: `v2026.3.26.dev1`
|
|
474
|
+
- PyPI prerelease: `v2026.3.26rc1`
|
|
475
|
+
- PyPI stable: `v2026.3.26`
|
|
476
|
+
|
|
457
477
|
## 🛠️ Typical Local Flow
|
|
458
478
|
|
|
459
479
|
```bash
|
|
@@ -75,15 +75,16 @@ cd coding-agent-telegram
|
|
|
75
75
|
|
|
76
76
|
What `startup.sh` does:
|
|
77
77
|
|
|
78
|
-
- creates `.
|
|
78
|
+
- creates `.env_coding_agent_telegram` from `src/coding_agent_telegram/resources/.env.example` if missing
|
|
79
|
+
- falls back to legacy `.env` if it already exists
|
|
79
80
|
- creates the state files if missing
|
|
80
81
|
- creates `.venv` if missing
|
|
81
82
|
- installs the package into the virtual environment
|
|
82
83
|
- starts the Telegram bot server
|
|
83
84
|
|
|
84
|
-
#### 3. Update
|
|
85
|
+
#### 3. Update The Env File
|
|
85
86
|
|
|
86
|
-
On first run, update the required fields in `.
|
|
87
|
+
On first run, update the required fields in `.env_coding_agent_telegram`:
|
|
87
88
|
|
|
88
89
|
- `WORKSPACE_ROOT`
|
|
89
90
|
- `TELEGRAM_BOT_TOKENS`
|
|
@@ -104,9 +105,10 @@ coding-agent-telegram
|
|
|
104
105
|
|
|
105
106
|
What happens on first run:
|
|
106
107
|
|
|
107
|
-
- the command creates `.
|
|
108
|
+
- the command creates `.env_coding_agent_telegram` in your current working directory if missing
|
|
109
|
+
- if legacy `.env` already exists, it reuses that instead
|
|
108
110
|
- it tells you which required fields to update
|
|
109
|
-
- after updating
|
|
111
|
+
- after updating the env file, run `coding-agent-telegram` again
|
|
110
112
|
|
|
111
113
|
Recommended flow:
|
|
112
114
|
|
|
@@ -117,7 +119,7 @@ pip install coding-agent-telegram
|
|
|
117
119
|
coding-agent-telegram
|
|
118
120
|
```
|
|
119
121
|
|
|
120
|
-
Then update `.
|
|
122
|
+
Then update `.env_coding_agent_telegram` and run:
|
|
121
123
|
|
|
122
124
|
```bash
|
|
123
125
|
coding-agent-telegram
|
|
@@ -143,7 +145,7 @@ If an unsupported message type is sent, the bot replies with a short error inste
|
|
|
143
145
|
|
|
144
146
|
## ⚙️ Environment Variables
|
|
145
147
|
|
|
146
|
-
These are the main fields in `.env`.
|
|
148
|
+
These are the main fields in the resolved env file, which defaults to `.env_coding_agent_telegram` and falls back to legacy `.env`.
|
|
147
149
|
|
|
148
150
|
### Required
|
|
149
151
|
|
|
@@ -268,7 +270,7 @@ GitHub documents these Copilot CLI approval controls here:
|
|
|
268
270
|
- `ENABLE_SENSITIVE_DIFF_FILTER`
|
|
269
271
|
Hide diffs for sensitive paths.
|
|
270
272
|
|
|
271
|
-
### Example
|
|
273
|
+
### Example Env Snippet
|
|
272
274
|
|
|
273
275
|
```env
|
|
274
276
|
WORKSPACE_ROOT=~/git
|
|
@@ -362,7 +364,6 @@ _During each agent run, the bot also takes a lightweight before/after project sn
|
|
|
362
364
|
|
|
363
365
|
- the app walks the project directory before and after the run
|
|
364
366
|
- for normal text files, the app prefers the per-run snapshot diff rather than a git-head diff
|
|
365
|
-
- `hidden files` and `hidden directories` are skipped by the snapshot walker by default, git-head diff will be used instead
|
|
366
367
|
- common dependency, cache, and runtime directories are also skipped
|
|
367
368
|
- binary files and files larger than `SNAPSHOT_TEXT_FILE_MAX_BYTES` are not loaded as text
|
|
368
369
|
- for huge projects, this extra scan can add noticeable I/O and memory overhead
|
|
@@ -375,7 +376,18 @@ Snapshot exclusion rules live in package resource files:
|
|
|
375
376
|
- `src/coding_agent_telegram/resources/snapshot_excluded_dir_globs.txt`
|
|
376
377
|
- `src/coding_agent_telegram/resources/snapshot_excluded_file_globs.txt`
|
|
377
378
|
|
|
378
|
-
|
|
379
|
+
You can override those defaults in the env file without editing the installed package:
|
|
380
|
+
|
|
381
|
+
- `SNAPSHOT_INCLUDE_PATH_GLOBS`
|
|
382
|
+
Force-include matching paths in diffs.
|
|
383
|
+
Example: `.github/*,.profile.test,.profile.prod`
|
|
384
|
+
|
|
385
|
+
- `SNAPSHOT_EXCLUDE_PATH_GLOBS`
|
|
386
|
+
Add extra diff exclusions on top of the packaged defaults.
|
|
387
|
+
Example: `.*,personal/*,sensitive*.txt`
|
|
388
|
+
Note: `.*` matches hidden paths, including files inside hidden directories.
|
|
389
|
+
|
|
390
|
+
If both include and exclude rules match, the include rule wins.
|
|
379
391
|
|
|
380
392
|
## 🌿 Branch Workflow
|
|
381
393
|
|
|
@@ -440,6 +452,14 @@ Typical logged events:
|
|
|
440
452
|
- `pyproject.toml`
|
|
441
453
|
Packaging and dependency configuration
|
|
442
454
|
|
|
455
|
+
## 📦 Release Versioning
|
|
456
|
+
|
|
457
|
+
Package versions are derived from Git tags.
|
|
458
|
+
|
|
459
|
+
- TestPyPI/testing: `v2026.3.26.dev1`
|
|
460
|
+
- PyPI prerelease: `v2026.3.26rc1`
|
|
461
|
+
- PyPI stable: `v2026.3.26`
|
|
462
|
+
|
|
443
463
|
## 🛠️ Typical Local Flow
|
|
444
464
|
|
|
445
465
|
```bash
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=68", "wheel"]
|
|
2
|
+
requires = ["setuptools>=68", "setuptools-scm>=8", "wheel"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "coding-agent-telegram"
|
|
7
|
-
|
|
7
|
+
dynamic = ["version"]
|
|
8
8
|
description = "Telegram bot bridge for local coding agents (Codex/Copilot CLI)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
11
11
|
license = { text = "MIT" }
|
|
12
|
-
authors = [{ name = "
|
|
12
|
+
authors = [{ name = "DCHA" }]
|
|
13
13
|
dependencies = [
|
|
14
14
|
"python-telegram-bot>=21.0,<22.0",
|
|
15
15
|
"python-dotenv>=1.0.0,<2.0.0",
|
|
@@ -34,6 +34,11 @@ coding_agent_telegram = [
|
|
|
34
34
|
[tool.setuptools.packages.find]
|
|
35
35
|
where = ["src"]
|
|
36
36
|
|
|
37
|
+
[tool.setuptools_scm]
|
|
38
|
+
version_scheme = "no-guess-dev"
|
|
39
|
+
local_scheme = "no-local-version"
|
|
40
|
+
tag_regex = "^v(?P<version>.*)$"
|
|
41
|
+
|
|
37
42
|
[tool.pytest.ini_options]
|
|
38
43
|
testpaths = ["tests"]
|
|
39
44
|
addopts = "-q"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""coding_agent_telegram package."""
|