Skip to content

Commit eae518f

Browse files
authored
build: vendor bleeding-edge bolt-python wheel from main branch (#11)
feat: vendor bleeding-edge bolt-python wheel from main branch Build slack-bolt from bolt-python main (837e120) with a PEP 440 local version identifier and check the .whl into vendor/. All three apps now install from the vendored wheel via requirements.txt instead of pinning to PyPI. Adds /project:update-bolt slash command for future updates.
1 parent b4ec7ea commit eae518f

14 files changed

Lines changed: 68 additions & 9 deletions

File tree

.claude/commands/update-bolt.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Update the vendored bolt-python wheel to the latest commit on the `main` branch.
2+
3+
## Steps
4+
5+
1. If `.bolt-python-build/` exists, `cd` into it and run `git pull`. Otherwise, clone bolt-python:
6+
```
7+
git clone --depth 1 https://github.com/slackapi/bolt-python.git .bolt-python-build
8+
```
9+
10+
2. `cd .bolt-python-build` and get the HEAD commit SHA (short form, 7 chars):
11+
```
12+
SHA=$(git rev-parse --short HEAD)
13+
```
14+
15+
3. Read the current version from `slack_bolt/version.py` and patch it to append `+<SHA>` as a PEP 440 local version identifier:
16+
```
17+
sed -i '' "s/__version__ = \"\(.*\)\"/__version__ = \"\1+$SHA\"/" slack_bolt/version.py
18+
```
19+
20+
4. Build the wheel:
21+
```
22+
python -m build --wheel
23+
```
24+
25+
5. Remove any old `.whl` files from `vendor/` and copy the new one in:
26+
```
27+
rm -f ../vendor/slack_bolt-*.whl
28+
cp dist/slack_bolt-*.whl ../vendor/
29+
```
30+
31+
6. Update the whl filename in all three `requirements.txt` files (`claude-agent-sdk/requirements.txt`, `openai-agents-sdk/requirements.txt`, `pydantic-ai/requirements.txt`). Replace the existing `../vendor/slack_bolt-*.whl` line with the new filename.
32+
33+
7. Clean up the build directory:
34+
```
35+
cd .. && rm -rf .bolt-python-build
36+
```
37+
38+
8. Report the old version/SHA vs new version/SHA to the user. Do NOT commit — let the user review first.

.github/dependabot.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ updates:
1111
labels:
1212
- "pip"
1313
- "dependencies"
14+
ignore:
15+
- dependency-name: "slack-bolt"
16+
# Vendored from bolt-python main — managed via /project:update-bolt
1417
- package-ecosystem: "github-actions"
1518
directory: "/"
1619
schedule:

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
# Claude
22
.claude/*.local.json
3+
4+
# bolt-python build scratch (used by /project:update-bolt command)
5+
.bolt-python-build/

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,21 @@ Casey gives your team instant IT support through three entry points:
2727
Behind the scenes, Casey has access to five simulated tools: knowledge base search, support ticket creation, password reset, system status checks, and user permissions lookup.
2828

2929
> **Note:** All tools return simulated data for demonstration purposes. In a production app, these would connect to your actual IT systems.
30+
31+
## Local Development
32+
33+
This repo uses a vendored (pre-release) build of `slack-bolt` from the [bolt-python](https://github.com/slackapi/bolt-python) `main` branch. The `.whl` file lives in `vendor/` and is referenced by each app's `requirements.txt`.
34+
35+
Always install dependencies with:
36+
37+
```sh
38+
pip install -r requirements.txt
39+
```
40+
41+
Do not use `pip install .` or `pip install -e .` — those read from `pyproject.toml`, which does not reference the vendored wheel.
42+
43+
To update the vendored bolt-python to the latest `main`, run the Claude Code slash command:
44+
45+
```
46+
/project:update-bolt
47+
```

claude-agent-sdk/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ source .venv/bin/activate # for Windows OS, .\.venv\Scripts\Activate instead sh
101101

102102
```sh
103103
pip install -r requirements.txt
104-
# or pip install -e .
105104
```
106105

107106
## Providers

claude-agent-sdk/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "0.1.0"
44
requires-python = ">=3.12"
55
dependencies = [
66
"slack-sdk==3.40.1",
7-
"slack-bolt==1.27.0",
7+
# slack-bolt is installed from a vendored whl — see ../vendor/
88
"slack-cli-hooks<1.0.0",
99
"claude-agent-sdk>=0.1.36",
1010
"aiohttp>=3.13.3",

claude-agent-sdk/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
slack-sdk==3.40.1
2-
slack-bolt==1.27.0
2+
../vendor/slack_bolt-1.27.0+837e120-py2.py3-none-any.whl
33
slack-cli-hooks<1.0.0
44
claude-agent-sdk>=0.1.36
55
aiohttp>=3.13.3

openai-agents-sdk/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ source .venv/bin/activate # for Windows OS, .\.venv\Scripts\Activate instead sh
101101

102102
```sh
103103
pip install -r requirements.txt
104-
# or pip install -e .
105104
```
106105

107106
## Providers

openai-agents-sdk/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "0.1.0"
44
requires-python = ">=3.10"
55
dependencies = [
66
"slack-sdk==3.40.1",
7-
"slack-bolt==1.27.0",
7+
# slack-bolt is installed from a vendored whl — see ../vendor/
88
"slack-cli-hooks<1.0.0",
99
"openai-agents",
1010
"python-dotenv==1.2.1",

openai-agents-sdk/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
slack-sdk==3.40.1
2-
slack-bolt==1.27.0
2+
../vendor/slack_bolt-1.27.0+837e120-py2.py3-none-any.whl
33
slack-cli-hooks<1.0.0
44
openai-agents
55
python-dotenv==1.2.1

0 commit comments

Comments
 (0)