greenbump 0.2.0
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.
- package/LICENSE +21 -0
- package/README.md +125 -0
- package/README.zh-CN.md +213 -0
- package/action-dist/index.cjs +19695 -0
- package/action.yml +76 -0
- package/dist/action/github.js +70 -0
- package/dist/action/github.js.map +1 -0
- package/dist/action/main.js +99 -0
- package/dist/action/main.js.map +1 -0
- package/dist/agent/factory.js +72 -0
- package/dist/agent/factory.js.map +1 -0
- package/dist/agent/fixer.js +307 -0
- package/dist/agent/fixer.js.map +1 -0
- package/dist/agent/fixer.test.js +224 -0
- package/dist/agent/fixer.test.js.map +1 -0
- package/dist/agent/provider-anthropic.js +59 -0
- package/dist/agent/provider-anthropic.js.map +1 -0
- package/dist/agent/provider-openai.js +65 -0
- package/dist/agent/provider-openai.js.map +1 -0
- package/dist/agent/provider.js +4 -0
- package/dist/agent/provider.js.map +1 -0
- package/dist/cli.js +138 -0
- package/dist/cli.js.map +1 -0
- package/dist/engine/batch.js +246 -0
- package/dist/engine/batch.js.map +1 -0
- package/dist/engine/batch.test.js +59 -0
- package/dist/engine/batch.test.js.map +1 -0
- package/dist/engine/changelog.js +66 -0
- package/dist/engine/changelog.js.map +1 -0
- package/dist/engine/checks.js +41 -0
- package/dist/engine/checks.js.map +1 -0
- package/dist/engine/checks.test.js +92 -0
- package/dist/engine/checks.test.js.map +1 -0
- package/dist/engine/detect.js +5 -0
- package/dist/engine/detect.js.map +1 -0
- package/dist/engine/ecosystems/bundler.js +59 -0
- package/dist/engine/ecosystems/bundler.js.map +1 -0
- package/dist/engine/ecosystems/cargo.js +83 -0
- package/dist/engine/ecosystems/cargo.js.map +1 -0
- package/dist/engine/ecosystems/cocoapods.js +47 -0
- package/dist/engine/ecosystems/cocoapods.js.map +1 -0
- package/dist/engine/ecosystems/composer.js +32 -0
- package/dist/engine/ecosystems/composer.js.map +1 -0
- package/dist/engine/ecosystems/conan.js +106 -0
- package/dist/engine/ecosystems/conan.js.map +1 -0
- package/dist/engine/ecosystems/elm.js +77 -0
- package/dist/engine/ecosystems/elm.js.map +1 -0
- package/dist/engine/ecosystems/go.js +72 -0
- package/dist/engine/ecosystems/go.js.map +1 -0
- package/dist/engine/ecosystems/gradle.js +90 -0
- package/dist/engine/ecosystems/gradle.js.map +1 -0
- package/dist/engine/ecosystems/index.js +67 -0
- package/dist/engine/ecosystems/index.js.map +1 -0
- package/dist/engine/ecosystems/maven.js +77 -0
- package/dist/engine/ecosystems/maven.js.map +1 -0
- package/dist/engine/ecosystems/mix.js +64 -0
- package/dist/engine/ecosystems/mix.js.map +1 -0
- package/dist/engine/ecosystems/npm.js +47 -0
- package/dist/engine/ecosystems/npm.js.map +1 -0
- package/dist/engine/ecosystems/nuget.js +50 -0
- package/dist/engine/ecosystems/nuget.js.map +1 -0
- package/dist/engine/ecosystems/parsers.test.js +255 -0
- package/dist/engine/ecosystems/parsers.test.js.map +1 -0
- package/dist/engine/ecosystems/pip.js +61 -0
- package/dist/engine/ecosystems/pip.js.map +1 -0
- package/dist/engine/ecosystems/pipenv.js +37 -0
- package/dist/engine/ecosystems/pipenv.js.map +1 -0
- package/dist/engine/ecosystems/pnpm.js +48 -0
- package/dist/engine/ecosystems/pnpm.js.map +1 -0
- package/dist/engine/ecosystems/poetry.js +42 -0
- package/dist/engine/ecosystems/poetry.js.map +1 -0
- package/dist/engine/ecosystems/pub.js +32 -0
- package/dist/engine/ecosystems/pub.js.map +1 -0
- package/dist/engine/ecosystems/python-shared.js +29 -0
- package/dist/engine/ecosystems/python-shared.js.map +1 -0
- package/dist/engine/ecosystems/swiftpm.js +102 -0
- package/dist/engine/ecosystems/swiftpm.js.map +1 -0
- package/dist/engine/ecosystems/types.js +19 -0
- package/dist/engine/ecosystems/types.js.map +1 -0
- package/dist/engine/ecosystems/uv.js +36 -0
- package/dist/engine/ecosystems/uv.js.map +1 -0
- package/dist/engine/ecosystems/yarn.js +62 -0
- package/dist/engine/ecosystems/yarn.js.map +1 -0
- package/dist/engine/exec.js +47 -0
- package/dist/engine/exec.js.map +1 -0
- package/dist/engine/git.js +42 -0
- package/dist/engine/git.js.map +1 -0
- package/dist/engine/git.test.js +111 -0
- package/dist/engine/git.test.js.map +1 -0
- package/dist/engine/pm.js +14 -0
- package/dist/engine/pm.js.map +1 -0
- package/dist/engine/run.js +167 -0
- package/dist/engine/run.js.map +1 -0
- package/dist/engine/run.test.js +47 -0
- package/dist/engine/run.test.js.map +1 -0
- package/dist/engine/upgrade.js +10 -0
- package/dist/engine/upgrade.js.map +1 -0
- package/dist/engine/workspace.js +155 -0
- package/dist/engine/workspace.js.map +1 -0
- package/dist/engine/workspace.test.js +95 -0
- package/dist/engine/workspace.test.js.map +1 -0
- package/dist/exitcode.js +51 -0
- package/dist/exitcode.js.map +1 -0
- package/dist/exitcode.test.js +62 -0
- package/dist/exitcode.test.js.map +1 -0
- package/dist/format.js +101 -0
- package/dist/format.js.map +1 -0
- package/dist/pr.js +63 -0
- package/dist/pr.js.map +1 -0
- package/dist/report.js +13 -0
- package/dist/report.js.map +1 -0
- package/dist/report.test.js +56 -0
- package/dist/report.test.js.map +1 -0
- package/dist/test-utils.js +36 -0
- package/dist/test-utils.js.map +1 -0
- package/package.json +56 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 greenbump contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# 🌱 greenbump
|
|
2
|
+
|
|
3
|
+
**The Renovate that actually fixes your code.**
|
|
4
|
+
|
|
5
|
+
Dependabot and Renovate bump your version numbers — then hand you a red PR and walk away. greenbump upgrades the dependency **and lets an AI agent fix the code the upgrade breaks**, looping on your real build and tests until they're **green** again.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx greenbump react
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
🌱 greenbump
|
|
13
|
+
· target: react 18.3.1 → 19.2.0
|
|
14
|
+
· created branch greenbump/react-19.2.0
|
|
15
|
+
· running baseline build + tests…
|
|
16
|
+
· installing react@19.2.0…
|
|
17
|
+
· upgrade broke test — starting AI fix loop
|
|
18
|
+
· round 1: read_file src/App.tsx
|
|
19
|
+
· round 2: write_file src/App.tsx
|
|
20
|
+
· round 3: run_check
|
|
21
|
+
· round 3: check passed — fixed
|
|
22
|
+
|
|
23
|
+
✓ Fixed: react 18.3.1 → 19.2.0 broke the build, agent repaired 2 file(s), now green.
|
|
24
|
+
branch: greenbump/react-19.2.0 (committed)
|
|
25
|
+
tokens: 41,201 in / 3,338 out
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Why
|
|
29
|
+
|
|
30
|
+
> Every version bump is a chore that ends in the same place: something broke, and now *you* read the changelog, find the renamed export, and patch the call sites. greenbump does that part.
|
|
31
|
+
|
|
32
|
+
- **Bring your own key.** greenbump uses *your* Anthropic API key — you pay only for the tokens a fix actually costs. No server, no subscription, nothing phones home.
|
|
33
|
+
- **Verifies against your real suite.** It only calls a run "fixed" when *your* `build` and `test` scripts pass. No guessing.
|
|
34
|
+
- **Safe by default.** Works on a fresh git branch, never auto-merges, never edits your lockfile to cheat, never deletes tests to go green.
|
|
35
|
+
- **Bounded cost.** The fix loop is capped (`--max-rounds`) so a hard upgrade can't run away with your tokens.
|
|
36
|
+
|
|
37
|
+
## Install / Use
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
41
|
+
|
|
42
|
+
# upgrade a specific dependency to latest
|
|
43
|
+
npx greenbump react
|
|
44
|
+
|
|
45
|
+
# pin a target version
|
|
46
|
+
npx greenbump eslint --to 9.15.0
|
|
47
|
+
|
|
48
|
+
# let greenbump pick the most-outdated dependency
|
|
49
|
+
npx greenbump
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Options
|
|
53
|
+
|
|
54
|
+
| Flag | Description |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `[dep]` | Dependency to upgrade. Omit to pick the most-outdated one. |
|
|
57
|
+
| `--to <version>` | Target version (default: `latest`). |
|
|
58
|
+
| `--ecosystem <id>` | Dependency ecosystem (`npm`, `poetry`, `cargo`, `maven`, …). Auto-detected if omitted. |
|
|
59
|
+
| `--list-ecosystems` | List every supported ecosystem and exit. |
|
|
60
|
+
| `--build-cmd <cmd>` | Override the build command, e.g. `"make build"`. |
|
|
61
|
+
| `--test-cmd <cmd>` | Override the test command, e.g. `"make test"`. |
|
|
62
|
+
| `--provider <name>` | Model provider preset (`anthropic`, `openai`, `deepseek`, `groq`, …). |
|
|
63
|
+
| `--model <model>` | Model id for the fix agent (default: per provider). |
|
|
64
|
+
| `--max-rounds <n>` | Cap fix-loop rounds / token spend (default: `15`). |
|
|
65
|
+
| `--no-git` | Operate in place instead of on a new branch. |
|
|
66
|
+
| `--pr-body` | Print a ready-to-paste PR body. |
|
|
67
|
+
|
|
68
|
+
## Ecosystems
|
|
69
|
+
|
|
70
|
+
greenbump auto-detects the ecosystem from your project's lockfile/manifest. Run `greenbump --list-ecosystems` for the current list.
|
|
71
|
+
|
|
72
|
+
**"Verified" (self-reported, manually smoke-tested once by the maintainer, not CI-checked):** npm, Yarn, pnpm, pip, Poetry, uv, Pipenv, Cargo, Go modules, Bundler, Composer, Gradle, Maven, NuGet (.NET), Mix (Hex), Pub (Dart/Flutter), Swift Package Manager, CocoaPods, Conan (C/C++), Elm.
|
|
73
|
+
|
|
74
|
+
"Verified" here means the maintainer personally ran the detect → outdated → install → build/test chain against a real project for that ecosystem at least once — it is **not** an automated guarantee, and CI does not re-run every real toolchain on every change (that would require installing 20 separate language runtimes and package managers). The `verified` field is self-reported per adapter in [`src/engine/ecosystems/types.ts`](src/engine/ecosystems/types.ts); parser logic for each ecosystem is unit-tested (see [`parsers.test.ts`](src/engine/ecosystems/parsers.test.ts)), but the underlying CLI tools themselves are not exercised in CI.
|
|
75
|
+
|
|
76
|
+
Please [report an issue](https://github.com/shidesheng0218/greenbump/issues) if one of these doesn't work as expected on your machine — real-world edge cases (unusual manifest styles, less common CLI flags) are the best signal for tightening these adapters further.
|
|
77
|
+
|
|
78
|
+
## GitHub Action
|
|
79
|
+
|
|
80
|
+
Let greenbump upgrade a dependency on a schedule and open the PR for you. Add `.github/workflows/greenbump.yml`:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
name: greenbump
|
|
84
|
+
on:
|
|
85
|
+
schedule:
|
|
86
|
+
- cron: "0 6 * * 1" # Mondays
|
|
87
|
+
workflow_dispatch:
|
|
88
|
+
permissions:
|
|
89
|
+
contents: write
|
|
90
|
+
pull-requests: write
|
|
91
|
+
jobs:
|
|
92
|
+
bump:
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
steps:
|
|
95
|
+
- uses: actions/checkout@v4
|
|
96
|
+
- uses: actions/setup-node@v4
|
|
97
|
+
with: { node-version: 20 }
|
|
98
|
+
- run: npm ci
|
|
99
|
+
- uses: shidesheng0218/greenbump@v0
|
|
100
|
+
with:
|
|
101
|
+
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Replace `shidesheng0218/greenbump` above with wherever you publish this repo. Add your key as the `ANTHROPIC_API_KEY` repo secret. greenbump opens a normal PR when build + tests are green, or a **draft** PR (flagged for review) when it couldn't fully fix the upgrade or the repo has nothing to verify against.
|
|
105
|
+
|
|
106
|
+
> **Want CI to run on the PR?** PRs opened with the default `GITHUB_TOKEN` don't trigger other workflows (a GitHub safeguard against loops). Pass a personal access token as `github-token:` if you need your CI to fire on greenbump's PRs.
|
|
107
|
+
|
|
108
|
+
Full example with inputs: [examples/greenbump.yml](examples/greenbump.yml).
|
|
109
|
+
|
|
110
|
+
## How it works
|
|
111
|
+
|
|
112
|
+
1. **Detect** the ecosystem and the outdated dependency (e.g. `npm outdated`, `poetry show -o`, `cargo` vs. crates.io, …).
|
|
113
|
+
2. **Isolate** on a fresh `greenbump/<dep>-<version>` branch.
|
|
114
|
+
3. **Baseline** — run your build + tests. If they're already red, greenbump stops (so it never chases pre-existing failures).
|
|
115
|
+
4. **Upgrade** the dependency.
|
|
116
|
+
5. **Fix loop** — if the upgrade breaks anything, an AI agent reads the failure, edits the source, and re-runs your checks until they pass or the round cap is hit.
|
|
117
|
+
6. **Commit** the branch and hand you a PR body.
|
|
118
|
+
|
|
119
|
+
## Status
|
|
120
|
+
|
|
121
|
+
Early MVP, one dependency at a time. Roadmap: batch upgrades, wider provider coverage, deeper per-ecosystem verification.
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
MIT
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# 🌱 greenbump
|
|
2
|
+
|
|
3
|
+
[English](README.md) | 简体中文
|
|
4
|
+
|
|
5
|
+
**真正能修复代码的依赖升级工具。**
|
|
6
|
+
|
|
7
|
+
Dependabot 和 Renovate 只会升级版本号,然后给你一个失败的 PR 就不管了。greenbump 不仅升级依赖,**还会让 AI 智能体修复升级导致的代码问题**,在你真实的构建和测试上循环迭代,直到**全部通过**。
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx greenbump react
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
🌱 greenbump
|
|
15
|
+
· 目标:react 18.3.1 → 19.2.0
|
|
16
|
+
· 创建分支 greenbump/react-19.2.0
|
|
17
|
+
· 运行基准构建和测试…
|
|
18
|
+
· 安装 react@19.2.0…
|
|
19
|
+
· 升级破坏了测试 — 启动 AI 修复循环
|
|
20
|
+
· 第 1 轮:read_file src/App.tsx
|
|
21
|
+
· 第 2 轮:write_file src/App.tsx
|
|
22
|
+
· 第 3 轮:run_check
|
|
23
|
+
· ✓ 所有检查通过
|
|
24
|
+
· 已提交修复,推送到远程
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 特性
|
|
30
|
+
|
|
31
|
+
- **自动修复破坏性变更** — AI 智能体读取错误日志,编辑代码,重新运行测试,直到通过
|
|
32
|
+
- **支持 20+ 包管理器** — npm、yarn、pnpm、cargo、pip、poetry、go mod、maven、gradle 等
|
|
33
|
+
- **GitHub Actions 集成** — 在 CI 中作为 scheduled workflow 运行,自动创建 PR
|
|
34
|
+
- **完整可见性** — 每一轮都显示智能体调用的工具和令牌使用量
|
|
35
|
+
- **可配置** — 设置最大修复轮数、选择 AI 模型、限制令牌预算
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 快速开始
|
|
40
|
+
|
|
41
|
+
### CLI 使用
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 升级 React 到最新版本
|
|
45
|
+
npx greenbump react
|
|
46
|
+
|
|
47
|
+
# 升级多个依赖
|
|
48
|
+
npx greenbump react typescript @types/react
|
|
49
|
+
|
|
50
|
+
# 指定目标版本
|
|
51
|
+
npx greenbump lodash@4.17.21
|
|
52
|
+
|
|
53
|
+
# 使用不同的 AI 模型
|
|
54
|
+
npx greenbump --provider openai --model gpt-4o react
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**需要 API 密钥:**
|
|
58
|
+
- Anthropic(默认):`export ANTHROPIC_API_KEY=sk-ant-...`
|
|
59
|
+
- OpenAI:`export OPENAI_API_KEY=sk-...`
|
|
60
|
+
|
|
61
|
+
### GitHub Actions
|
|
62
|
+
|
|
63
|
+
创建 `.github/workflows/greenbump.yml`:
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
name: greenbump
|
|
67
|
+
on:
|
|
68
|
+
schedule:
|
|
69
|
+
- cron: '0 2 * * 1' # 每周一凌晨 2 点
|
|
70
|
+
workflow_dispatch:
|
|
71
|
+
|
|
72
|
+
jobs:
|
|
73
|
+
upgrade:
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
permissions:
|
|
76
|
+
contents: write
|
|
77
|
+
pull-requests: write
|
|
78
|
+
steps:
|
|
79
|
+
- uses: actions/checkout@v4
|
|
80
|
+
- uses: shidesheng0218/greenbump@v0
|
|
81
|
+
with:
|
|
82
|
+
packages: 'react typescript lodash'
|
|
83
|
+
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
在仓库设置中添加 `ANTHROPIC_API_KEY` secret。
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 工作原理
|
|
91
|
+
|
|
92
|
+
1. **检测生态系统** — 自动识别 package.json、Cargo.toml、go.mod 等
|
|
93
|
+
2. **运行基准测试** — 在升级前运行构建和测试,确保它们通过
|
|
94
|
+
3. **升级依赖** — 安装目标版本
|
|
95
|
+
4. **检查是否破坏** — 重新运行测试,如果失败则启动 AI 修复循环
|
|
96
|
+
5. **AI 修复循环** — 智能体可以:
|
|
97
|
+
- `read_file` — 读取源代码和错误日志
|
|
98
|
+
- `write_file` — 编辑代码文件
|
|
99
|
+
- `run_check` — 重新运行构建和测试
|
|
100
|
+
- 循环直到所有检查通过或达到最大轮数
|
|
101
|
+
6. **提交并推送** — 创建描述性提交信息和 PR 正文
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## CLI 选项
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
npx greenbump [选项] <包名...>
|
|
109
|
+
|
|
110
|
+
选项:
|
|
111
|
+
--provider <名称> AI 提供商:anthropic | openai(默认:anthropic)
|
|
112
|
+
--model <名称> 模型名称(默认:claude-3-7-sonnet-20250219)
|
|
113
|
+
--max-rounds <数字> 每个包的最大修复轮数(默认:15)
|
|
114
|
+
--max-total-tokens <数字> 令牌预算限制(可选)
|
|
115
|
+
--no-push 本地提交但不推送到远程
|
|
116
|
+
--help 显示帮助信息
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 支持的包管理器
|
|
122
|
+
|
|
123
|
+
| 生态系统 | 清单文件 | 安装命令 |
|
|
124
|
+
|---------|---------|---------|
|
|
125
|
+
| **JavaScript** | package.json | npm/yarn/pnpm/bun |
|
|
126
|
+
| **Python** | requirements.txt, pyproject.toml | pip/poetry/pipenv/uv |
|
|
127
|
+
| **Rust** | Cargo.toml | cargo |
|
|
128
|
+
| **Go** | go.mod | go get |
|
|
129
|
+
| **Java** | pom.xml, build.gradle | mvn/gradle |
|
|
130
|
+
| **Ruby** | Gemfile | bundler |
|
|
131
|
+
| **PHP** | composer.json | composer |
|
|
132
|
+
| **Dart** | pubspec.yaml | pub/flutter |
|
|
133
|
+
| **Swift** | Package.swift | swift |
|
|
134
|
+
| **Elixir** | mix.exs | mix |
|
|
135
|
+
| **Elm** | elm.json | elm |
|
|
136
|
+
| **C#** | *.csproj | dotnet |
|
|
137
|
+
| **C++** | conanfile.txt | conan |
|
|
138
|
+
| **iOS** | Podfile | pod |
|
|
139
|
+
|
|
140
|
+
每个适配器实现:
|
|
141
|
+
- `detect()` — 查找清单文件
|
|
142
|
+
- `outdated()` — 检查可用更新
|
|
143
|
+
- `install()` — 安装特定版本
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 贡献
|
|
148
|
+
|
|
149
|
+
欢迎提交 Issue 和 Pull Request!
|
|
150
|
+
|
|
151
|
+
查看 [CONTRIBUTING.md](CONTRIBUTING.md) 了解:
|
|
152
|
+
- 如何设置开发环境
|
|
153
|
+
- 如何添加新的包管理器支持
|
|
154
|
+
- 代码风格指南
|
|
155
|
+
- 如何运行测试
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 安全
|
|
160
|
+
|
|
161
|
+
如果你发现安全漏洞,请查看 [SECURITY.md](SECURITY.md) 了解如何负责任地报告。
|
|
162
|
+
|
|
163
|
+
**关键安全边界:**
|
|
164
|
+
- AI 智能体只能访问项目目录内的文件(路径遍历保护)
|
|
165
|
+
- 所有文件操作都经过 `safePath()` 验证
|
|
166
|
+
- 智能体不能执行任意 shell 命令
|
|
167
|
+
- 发送给 AI 提供商的数据:错误日志、差异、文件内容(不包含 secrets)
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 许可证
|
|
172
|
+
|
|
173
|
+
MIT License — 详见 [LICENSE](LICENSE)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 常见问题
|
|
178
|
+
|
|
179
|
+
**Q: greenbump 和 Renovate/Dependabot 有什么区别?**
|
|
180
|
+
|
|
181
|
+
A: Renovate 和 Dependabot 只升级版本号。如果升级破坏了代码(例如 API 变更),它们会创建一个失败的 PR,由你来修复。greenbump 使用 AI 智能体自动修复破坏性变更,循环运行测试直到通过。
|
|
182
|
+
|
|
183
|
+
**Q: AI 修复需要多长时间?**
|
|
184
|
+
|
|
185
|
+
A: 取决于破坏的复杂度。简单的 API 重命名通常 1-2 轮(30-60 秒)。复杂的架构变更可能需要 5-10 轮(2-5 分钟)。你可以用 `--max-rounds` 限制。
|
|
186
|
+
|
|
187
|
+
**Q: 费用是多少?**
|
|
188
|
+
|
|
189
|
+
A: 使用你自己的 API 密钥,按 AI 提供商的定价付费。典型的修复消耗 10k-50k tokens(Claude Sonnet 约 $0.15-$0.75)。可以用 `--max-total-tokens` 设置预算上限。
|
|
190
|
+
|
|
191
|
+
**Q: 支持私有包吗?**
|
|
192
|
+
|
|
193
|
+
A: 支持。greenbump 使用你本地的包管理器配置,如果 `npm install` 能访问你的私有 registry,greenbump 也能。
|
|
194
|
+
|
|
195
|
+
**Q: 能修复所有破坏性变更吗?**
|
|
196
|
+
|
|
197
|
+
A: 不能保证。AI 能处理大多数常见的 API 变更、导入重命名、配置更新等。对于需要深度架构改动的变更可能会达到 `--max-rounds` 限制。你总是可以在智能体的工作基础上继续手动修复。
|
|
198
|
+
|
|
199
|
+
**Q: 安全吗?**
|
|
200
|
+
|
|
201
|
+
A: 智能体被限制在项目目录内,不能执行任意命令。但它**会修改你的代码**,所以:
|
|
202
|
+
- 在干净的 git 工作树上运行(有未提交的变更会被拒绝)
|
|
203
|
+
- 审查修复后的 PR 再合并
|
|
204
|
+
- 在非关键分支上先测试
|
|
205
|
+
- 查看 [SECURITY.md](SECURITY.md) 了解完整的安全模型
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 反馈
|
|
210
|
+
|
|
211
|
+
遇到问题或有建议?请在 [GitHub Issues](https://github.com/shidesheng0218/greenbump/issues) 提交。
|
|
212
|
+
|
|
213
|
+
开发者:[@shidesheng0218](https://github.com/shidesheng0218)
|