baxian 2.0.11 → 2.0.12
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/README.md +31 -25
- package/README.zh-CN.md +29 -23
- package/dist/agent/manager.js +2 -2
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/phase-signal.d.ts.map +1 -1
- package/dist/agent/phase-signal.js +2 -1
- package/dist/agent/phase-signal.js.map +1 -1
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +5 -4
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/tmux.d.ts.map +1 -1
- package/dist/agent/tmux.js +12 -1
- package/dist/agent/tmux.js.map +1 -1
- package/dist/api/platform-guard.js +1 -1
- package/dist/api/platform-guard.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +43 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +38 -13
- package/dist/config/validator.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/platform/comment-cursor.js +1 -1
- package/dist/platform/comment-cursor.js.map +1 -1
- package/dist/platform/driver-host.d.ts +18 -1
- package/dist/platform/driver-host.d.ts.map +1 -1
- package/dist/platform/driver-host.js +191 -5
- package/dist/platform/driver-host.js.map +1 -1
- package/dist/platform/feedback.d.ts.map +1 -1
- package/dist/platform/feedback.js +6 -2
- package/dist/platform/feedback.js.map +1 -1
- package/dist/platform/github-driver.d.ts +4 -7
- package/dist/platform/github-driver.d.ts.map +1 -1
- package/dist/platform/github-driver.js +40 -18
- package/dist/platform/github-driver.js.map +1 -1
- package/dist/platform/platform-poller.js +1 -1
- package/dist/platform/platform-poller.js.map +1 -1
- package/dist/platform/plugin-loader.d.ts +23 -0
- package/dist/platform/plugin-loader.d.ts.map +1 -0
- package/dist/platform/plugin-loader.js +245 -0
- package/dist/platform/plugin-loader.js.map +1 -0
- package/dist/platform/row-schema.d.ts +1 -0
- package/dist/platform/row-schema.d.ts.map +1 -1
- package/dist/platform/row-schema.js +25 -2
- package/dist/platform/row-schema.js.map +1 -1
- package/dist/platform/startup.d.ts.map +1 -1
- package/dist/platform/startup.js +2 -1
- package/dist/platform/startup.js.map +1 -1
- package/dist/platform/types.d.ts +20 -1
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/platform/types.js +4 -0
- package/dist/platform/types.js.map +1 -1
- package/dist/shared/git-url.d.ts +0 -4
- package/dist/shared/git-url.d.ts.map +1 -1
- package/dist/shared/git-url.js +0 -23
- package/dist/shared/git-url.js.map +1 -1
- package/dist/web/assets/index-Ce_U0jUZ.js +17 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/web/assets/index-Bl8AIH03.js +0 -17
package/README.md
CHANGED
|
@@ -20,33 +20,33 @@
|
|
|
20
20
|
|
|
21
21
|
## Why baxian
|
|
22
22
|
|
|
23
|
-
baxian pairs every **Dev agent** with an independent **QA agent**: the Dev implements and opens a pull request, the QA reviews it with fresh eyes, and
|
|
23
|
+
Coding agents are fast; the bottleneck is checking their work. baxian pairs every **Dev agent** with an independent **QA agent**: the Dev implements and opens a pull request, the QA reviews it with fresh eyes, and findings and fixes go back and forth automatically until the change is approved. You step in for the sign-offs: approving the plan when you've required that, and confirming the final result.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
An agent is an interactive CLI — **Claude Code, Codex, OpenCode, or Qoder CLI** — running inside a tmux session. The terminal you see in the browser is that same session: `baxian attach <agent-id>` (or `tmux attach -t '=<agent-id>'` on the agent's machine) drops you into it, and closing the browser stops nothing.
|
|
26
26
|
|
|
27
27
|
## Features
|
|
28
28
|
|
|
29
|
-
- **Terminal wall** — the dashboard
|
|
30
|
-
- **Automated review loop** — QA
|
|
31
|
-
- **
|
|
32
|
-
- **
|
|
29
|
+
- **Terminal wall** — the dashboard shows every agent's live terminal. Click a pane to type into the real session; what every agent is doing is always one glance away.
|
|
30
|
+
- **Automated review loop** — QA posts findings on the pull request, Dev fixes each one or rejects it with a reason, QA re-checks — until the verdict is approve.
|
|
31
|
+
- **Real pull requests** — each task gets its own branch and PR on your Git platform (GitHub built-in; other platforms via plugins), so reviews live where your team already works. With `merge: "auto"`, baxian merges the approved PR once you confirm.
|
|
32
|
+
- **Plan approval (optional)** — a task can start with a written plan instead of code. QA reviews the plan the same way, and with `specApproval: "human"` coding waits for your sign-off.
|
|
33
33
|
- **Local & remote agents** — run agents on any machine reachable over SSH; baxian manages the remote tmux sessions for you.
|
|
34
|
-
- **
|
|
34
|
+
- **Model credentials stay in your CLIs** — baxian stores no model keys and configures none of its own; each agent uses whatever auth its CLI already has. Repository access (git plus your platform's CLI — `gh` for GitHub) is a separate prerequisite — see Requirements.
|
|
35
35
|
- **Quality of life** — bilingual UI (English / 简体中文), browser notifications when tasks finish, image upload straight into an agent's terminal, and optional pixel-art agent pets.
|
|
36
36
|
|
|
37
37
|
## The workflow
|
|
38
38
|
|
|
39
|
-
1. **Create a task** in the web console (or
|
|
40
|
-
2. A **Dev agent**
|
|
41
|
-
3. A **QA agent** reviews the diff independently and
|
|
42
|
-
4. The Dev agent answers every finding —
|
|
43
|
-
5. Repeat until **approve**. You confirm the result, and the PR
|
|
39
|
+
1. **Create a task** in the web console (or with `baxian task create`).
|
|
40
|
+
2. A **Dev agent** picks it up: branch, implementation, tests, pull request.
|
|
41
|
+
3. A **QA agent** reviews the diff independently and posts findings.
|
|
42
|
+
4. The Dev agent answers every finding — a fix and a commit, or a reasoned rejection — and pushes.
|
|
43
|
+
5. Repeat until **approve**. You confirm the result, and the PR is merged — by baxian if the project sets `merge: "auto"`, otherwise by hand.
|
|
44
44
|
|
|
45
45
|
<p align="center">
|
|
46
46
|
<img src="https://raw.githubusercontent.com/baxian-ai/baxian/main/assets/screenshots/task-detail.webp" alt="Task detail — status, PR, and the full review record" width="820">
|
|
47
47
|
</p>
|
|
48
48
|
|
|
49
|
-
Every round is recorded and browsable —
|
|
49
|
+
Every round is recorded and browsable — QA's findings and Dev's responses, each with its commits.
|
|
50
50
|
|
|
51
51
|
## How it works
|
|
52
52
|
|
|
@@ -63,16 +63,17 @@ Every round is recorded and browsable — the QA review with its findings, and t
|
|
|
63
63
|
dev-1 · qa-1 dev-2 · qa-2
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
The server
|
|
66
|
+
The server keeps task state, drives each agent by typing into its tmux pane, and follows review activity on the pull request of your Git platform.
|
|
67
67
|
|
|
68
68
|
## Requirements
|
|
69
69
|
|
|
70
70
|
> - **Node.js ≥ 22.13**
|
|
71
71
|
> - **tmux** on every machine that runs agents (local and remote)
|
|
72
|
-
> - **Claude Code** (`claude`)
|
|
73
|
-
> - **git**
|
|
72
|
+
> - The CLI of every runtime your agents use, installed and working on each machine that runs such an agent — signed in where its provider requires that: **Claude Code** (`claude`), **Codex** (`codex`), **OpenCode** (`opencode`), **Qoder CLI** (`qodercli`). One host running several runtimes needs each of their CLIs.
|
|
73
|
+
> - **git** access to your repository on every agent machine — push access for Dev agents; read is enough for QA. For private HTTPS repositories on GitHub, run `gh auth setup-git` on every agent host.
|
|
74
|
+
> - For projects on the built-in GitHub driver: an authenticated **GitHub CLI** (`gh`) on every agent machine (Dev opens PRs, QA posts reviews) and on the server, where it needs write access to the repository (it polls reviews, merges and closes PRs). Projects on a plugin platform follow that plugin's CLI and auth requirements instead.
|
|
74
75
|
>
|
|
75
|
-
>
|
|
76
|
+
> `baxian check <project>` checks tmux, the CLI binaries, git access, and platform CLI auth (`gh` for GitHub) for every agent. Static checks can't see everything — confirm yourself that each agent CLI starts and works with its configured model, that QA's platform credentials may write PR reviews, and that Dev's git credential can actually push (a read-only deploy key still passes the read probe).
|
|
76
77
|
|
|
77
78
|
## Quick start
|
|
78
79
|
|
|
@@ -85,9 +86,9 @@ Open <http://localhost:3000>. The first run creates `~/.baxian/baxian.json` for
|
|
|
85
86
|
|
|
86
87
|
Then, in the console:
|
|
87
88
|
|
|
88
|
-
1. **New project** — point it at a
|
|
89
|
-
2. **Add agents** — an Agent Team (for example Claude Code as Dev, Codex as QA), each with a working directory
|
|
90
|
-
3. **New task** — describe what you want; the Dev agent
|
|
89
|
+
1. **New project** — point it at a repository on GitHub, or on any platform added by an installed plugin.
|
|
90
|
+
2. **Add agents** — an Agent Team (for example Claude Code as Dev, Codex as QA), each with a working directory that holds a clone of the repo.
|
|
91
|
+
3. **New task** — describe what you want; the Dev agent takes it from there.
|
|
91
92
|
|
|
92
93
|
### CLI
|
|
93
94
|
|
|
@@ -97,13 +98,18 @@ baxian --home <dir> # use a separate instance home (or set BAXIAN_HOME)
|
|
|
97
98
|
baxian status # status of all agents
|
|
98
99
|
baxian attach <agent-id> # attach to an agent's tmux session, local or remote
|
|
99
100
|
baxian stop <agent-id> # interrupt an agent
|
|
101
|
+
baxian check <project> # preflight a project's agents (--fix installs missing tmux)
|
|
100
102
|
baxian task create -p <project> -t "title" -a <dev-id> [-d "description"]
|
|
101
103
|
baxian task list -p <project>
|
|
104
|
+
baxian task cancel <task-id>
|
|
105
|
+
baxian plugin install <pkg> [--registry <url>] # download a platform plugin package (e.g. an internal Git platform); restart to activate
|
|
106
|
+
baxian plugin status # installed platform plugins and whether they load
|
|
107
|
+
baxian plugin uninstall <pkg> # remove a platform plugin; repositories only it recognized stop validating
|
|
102
108
|
```
|
|
103
109
|
|
|
104
110
|
## Configuration
|
|
105
111
|
|
|
106
|
-
baxian reads `<home>/baxian.json`, where `<home>` defaults to `~/.baxian
|
|
112
|
+
baxian reads exactly one file: `<home>/baxian.json`, where `<home>` defaults to `~/.baxian` (override with `baxian --home <dir>` or `BAXIAN_HOME`; the CLI option wins). A minimal configuration:
|
|
107
113
|
|
|
108
114
|
```json
|
|
109
115
|
{
|
|
@@ -128,17 +134,17 @@ baxian reads `<home>/baxian.json`, where `<home>` defaults to `~/.baxian`. Overr
|
|
|
128
134
|
}
|
|
129
135
|
```
|
|
130
136
|
|
|
131
|
-
Each inner array in `agent` is one Agent Team — a Dev
|
|
137
|
+
Each inner array in `agent` is one Agent Team — a Dev and a QA that work the repo together. `runtime` accepts `claude-code`, `codex`, `opencode`, or `qodercli`; `host` is only needed for remote agents. See [`baxian.json.example`](https://github.com/baxian-ai/baxian/blob/main/baxian.json.example) for a fuller example including remote agents. Projects, agents, and hosts can also be managed from the web console (along with UI language and notifications), and it tells you when a change needs a server restart; the remaining options are edited in the file.
|
|
132
138
|
|
|
133
139
|
Useful options:
|
|
134
140
|
|
|
135
141
|
| Key | What it does |
|
|
136
142
|
| --- | --- |
|
|
137
143
|
| `language` | UI language, `en-US` (default) or `zh-CN` |
|
|
138
|
-
| `review.rounds` |
|
|
144
|
+
| `review.rounds` | Review-round cap; when a change would still need another round past it, the task pauses as `max_rounds` |
|
|
139
145
|
| `server.token` | Bearer token protecting the API and web console |
|
|
140
|
-
| `project[].merge` | `"auto"`: baxian merges the PR
|
|
141
|
-
| `project[].specApproval` | `"human"`:
|
|
146
|
+
| `project[].merge` | `"auto"`: baxian merges the approved PR once you confirm; `null`: merge by hand |
|
|
147
|
+
| `project[].specApproval` | `"human"`: a plan needs your approval before coding starts (the web console preselects this); `null` or omitted in the file: coding starts as soon as QA approves the plan |
|
|
142
148
|
| `project[].agent[][].mode` + `host` | `local`, or `remote` with a host id for SSH-managed agents |
|
|
143
149
|
|
|
144
150
|
## License
|
package/README.zh-CN.md
CHANGED
|
@@ -20,33 +20,33 @@
|
|
|
20
20
|
|
|
21
21
|
## 为什么是 baxian
|
|
22
22
|
|
|
23
|
-
baxian 给每个 **Dev agent** 配一个独立的 **QA agent**:Dev 实现并提交 pull request,QA 以旁观者视角评审,「评审意见 →
|
|
23
|
+
AI 写代码很快,瓶颈在于检查它写得对不对。baxian 给每个 **Dev agent** 配一个独立的 **QA agent**:Dev 实现并提交 pull request,QA 以旁观者视角评审,「评审意见 → 修复」自动往返,直到改动通过。需要你出手的是签字环节:启用方案确认时批准方案,最后确认结果。
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
agent 本体是一个交互式 CLI——**Claude Code、Codex、OpenCode 或 Qoder CLI**——跑在 tmux 会话里。浏览器里看到的终端就是那个真实会话:用 `baxian attach <agent-id>`(或在 agent 所在机器上 `tmux attach -t '=<agent-id>'`)就能进到同一个会话;关掉浏览器,agent 照常干活。
|
|
26
26
|
|
|
27
27
|
## 功能特性
|
|
28
28
|
|
|
29
|
-
- **终端墙** ——
|
|
30
|
-
- **自动评审循环** —— QA 在 pull request
|
|
31
|
-
-
|
|
32
|
-
-
|
|
29
|
+
- **终端墙** —— 控制台展示每个 agent 的实时终端,点击任意窗格就能直接输入;每个 agent 在做什么,一眼可见。
|
|
30
|
+
- **自动评审循环** —— QA 在 pull request 上提出评审意见,Dev 逐条修复或说明理由拒绝,QA 复审——循环直到结论为通过。
|
|
31
|
+
- **真实的 pull request** —— 每个任务一个分支、一个 Git 平台上的 PR(内置 GitHub,其他平台走插件),评审就发生在团队日常工作的地方。项目设置 `merge: "auto"` 时,任务通过并经你确认后由 baxian 代为合并。
|
|
32
|
+
- **方案确认(可选)** —— 任务可以先产出方案再动手写码,方案同样经过 QA 评审;配置 `specApproval: "human"` 后,方案要等你批准才开始开发。
|
|
33
33
|
- **本地与远程 agent** —— agent 可以跑在任何 SSH 可达的机器上,远端 tmux 会话由 baxian 代管。
|
|
34
|
-
-
|
|
34
|
+
- **模型凭证不经 baxian** —— baxian 不保存、也不重复配置任何模型凭证;agent 用的就是各 CLI 已有的认证与模型配置。仓库访问(git 与所选平台的 CLI,GitHub 为 `gh`)另有要求,见环境要求。
|
|
35
35
|
- **周边体验** —— 双语界面(English / 简体中文)、任务完成浏览器通知、向 agent 终端直接上传图片,以及可选的像素风 agent 宠物。
|
|
36
36
|
|
|
37
37
|
## 工作流
|
|
38
38
|
|
|
39
|
-
1. 在 Web
|
|
39
|
+
1. 在 Web 控制台**创建任务**(也可以用 `baxian task create`)。
|
|
40
40
|
2. **Dev agent** 接手:开分支、实现、测试、提 pull request。
|
|
41
|
-
3. **QA agent** 独立评审 diff
|
|
42
|
-
4. Dev agent
|
|
43
|
-
5.
|
|
41
|
+
3. **QA agent** 独立评审 diff,提出评审意见。
|
|
42
|
+
4. Dev agent 逐条回应——修复并提交,或说明理由拒绝——然后推送。
|
|
43
|
+
5. 循环直到**通过**。你确认结果后 PR 被合并——项目设了 `merge: "auto"` 就由 baxian 代劳,否则手动合并。
|
|
44
44
|
|
|
45
45
|
<p align="center">
|
|
46
46
|
<img src="https://raw.githubusercontent.com/baxian-ai/baxian/main/assets/screenshots/task-detail.webp" alt="任务详情——状态、PR 与完整评审记录" width="820">
|
|
47
47
|
</p>
|
|
48
48
|
|
|
49
|
-
每一轮都有记录、可回看——QA
|
|
49
|
+
每一轮都有记录、可回看——QA 的评审意见和 Dev 的逐条回应,以及对应的提交。
|
|
50
50
|
|
|
51
51
|
## 工作原理
|
|
52
52
|
|
|
@@ -63,16 +63,17 @@ baxian 是 **tmux 原生**的。一个 agent 就是 tmux session 里的一个交
|
|
|
63
63
|
dev-1 · qa-1 dev-2 · qa-2
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
server
|
|
66
|
+
server 记录任务状态,通过向 tmux pane 输入来驱动 agent,并在所用 Git 平台的 PR 上跟进评审动态。
|
|
67
67
|
|
|
68
68
|
## 环境要求
|
|
69
69
|
|
|
70
70
|
> - **Node.js ≥ 22.13**
|
|
71
71
|
> - 每台跑 agent 的机器(本地与远程)都装有 **tmux**
|
|
72
|
-
> -
|
|
73
|
-
> -
|
|
72
|
+
> - 每个 agent 所选 runtime 的 CLI 都已在其所在机器安装、并能正常运行(provider 需要认证的先完成认证):**Claude Code**(`claude`)、**Codex**(`codex`)、**OpenCode**(`opencode`)、**Qoder CLI**(`qodercli`);同一台机器跑多种 runtime,就要装齐对应的全部 CLI
|
|
73
|
+
> - 每台 agent 机器都能用 **git** 访问仓库——Dev agent 需要推送权限,QA 只读即可。GitHub 私有 HTTPS 仓库需在每台 agent 主机上执行 `gh auth setup-git`。
|
|
74
|
+
> - 使用内置 GitHub 驱动的项目:每台 agent 机器上已认证的 **GitHub CLI**(`gh`)——Dev 用它开 PR、QA 用它发评审;server 本机的 `gh` 需要仓库写权限(轮询评审、合并与关闭 PR)。使用插件平台的项目改为遵循对应插件的 CLI 与认证要求。
|
|
74
75
|
>
|
|
75
|
-
>
|
|
76
|
+
> 运行 `baxian check <project>` 可检查各 agent 的 tmux、CLI 二进制、git 访问与平台 CLI 登录(GitHub 为 `gh`)。静态检查无法覆盖一切,请自行确认:各 agent CLI 能以所配模型正常启动、QA 的平台凭证可发布 PR review、Dev 的 git 凭证确实能 push(只读 deploy key 也能通过读探测)。
|
|
76
77
|
|
|
77
78
|
## 快速开始
|
|
78
79
|
|
|
@@ -85,9 +86,9 @@ baxian
|
|
|
85
86
|
|
|
86
87
|
然后在控制台里:
|
|
87
88
|
|
|
88
|
-
1. **新建项目** —— 指向一个
|
|
89
|
+
1. **新建项目** —— 指向一个 GitHub 仓库,或任何已装插件所支持平台上的仓库。
|
|
89
90
|
2. **添加 agent** —— 一个 Agent Team(例如 Claude Code 当 Dev、Codex 当 QA),各自的工作目录里放一份仓库的 clone。
|
|
90
|
-
3. **新建任务** ——
|
|
91
|
+
3. **新建任务** —— 描述你要做什么,剩下的交给 Dev agent。
|
|
91
92
|
|
|
92
93
|
### CLI
|
|
93
94
|
|
|
@@ -97,13 +98,18 @@ baxian --home <dir> # 使用独立实例 home(也可设置 BAXIAN_HOME
|
|
|
97
98
|
baxian status # 查看所有 agent 状态
|
|
98
99
|
baxian attach <agent-id> # 接入 agent 的 tmux 会话(本地或远程)
|
|
99
100
|
baxian stop <agent-id> # 打断一个 agent
|
|
101
|
+
baxian check <project> # 逐项检查项目内各 agent 的环境(--fix 自动安装缺失的 tmux)
|
|
100
102
|
baxian task create -p <project> -t "标题" -a <dev-id> [-d "描述"]
|
|
101
103
|
baxian task list -p <project>
|
|
104
|
+
baxian task cancel <task-id>
|
|
105
|
+
baxian plugin install <pkg> [--registry <url>] # 下载平台插件包(如内部 Git 平台),重启 server 生效
|
|
106
|
+
baxian plugin status # 查看已安装平台插件及其加载状态
|
|
107
|
+
baxian plugin uninstall <pkg> # 卸载平台插件;仅它识别的仓库地址将不再通过校验
|
|
102
108
|
```
|
|
103
109
|
|
|
104
110
|
## 配置
|
|
105
111
|
|
|
106
|
-
baxian
|
|
112
|
+
baxian 只读取一个配置文件:`<home>/baxian.json`,`<home>` 默认为 `~/.baxian`(可用 `baxian --home <dir>` 或 `BAXIAN_HOME` 覆盖,CLI 参数优先)。最小配置:
|
|
107
113
|
|
|
108
114
|
```json
|
|
109
115
|
{
|
|
@@ -128,17 +134,17 @@ baxian 固定读取 `<home>/baxian.json`,`<home>` 默认为 `~/.baxian`。可
|
|
|
128
134
|
}
|
|
129
135
|
```
|
|
130
136
|
|
|
131
|
-
`agent` 里的每个内层数组是一个 Agent Team——协作同一仓库的一个 Dev
|
|
137
|
+
`agent` 里的每个内层数组是一个 Agent Team——协作同一仓库的一个 Dev 加一个 QA。`runtime` 可选 `claude-code`、`codex`、`opencode`、`qodercli`;`host` 只在使用远程 agent 时需要。更完整的示例(含远程 agent)见 [`baxian.json.example`](https://github.com/baxian-ai/baxian/blob/main/baxian.json.example)。项目、agent、主机也可以在 Web 控制台里创建和管理(界面语言与通知同样在控制台设置),需要重启 server 的改动界面会明确提示;其余配置项直接编辑配置文件。
|
|
132
138
|
|
|
133
139
|
常用配置项:
|
|
134
140
|
|
|
135
141
|
| 配置项 | 作用 |
|
|
136
142
|
| --- | --- |
|
|
137
143
|
| `language` | 界面语言,`en-US`(默认)或 `zh-CN` |
|
|
138
|
-
| `review.rounds` |
|
|
144
|
+
| `review.rounds` | 评审轮数上限;最后允许的一轮之后仍需修改时,任务以 `max_rounds` 暂停 |
|
|
139
145
|
| `server.token` | 保护 API 与 Web 控制台的 Bearer token |
|
|
140
|
-
| `project[].merge` | `"auto"
|
|
141
|
-
| `project[].specApproval` | `"human"
|
|
146
|
+
| `project[].merge` | `"auto"`:任务通过并经你确认后由 baxian 合并 PR;`null`:手动合并 |
|
|
147
|
+
| `project[].specApproval` | `"human"`:方案需你批准后才开始开发(Web 控制台新建项目时默认选中);配置文件中省略或填 `null`:QA 通过方案即开始开发 |
|
|
142
148
|
| `project[].agent[][].mode` + `host` | `local` 本地运行,或 `remote` 配主机 id 走 SSH 代管 |
|
|
143
149
|
|
|
144
150
|
## 许可证
|
package/dist/agent/manager.js
CHANGED
|
@@ -5,8 +5,8 @@ import { join, normalize } from 'node:path';
|
|
|
5
5
|
import { tmpdir } from 'node:os';
|
|
6
6
|
import { createSignalToken, PASSIVE_VERDICT_WATCH } from './phase-signal.js';
|
|
7
7
|
import { tmuxInstallHint } from './preflight.js';
|
|
8
|
-
import { BRANCH_PREFIX, isValidBranchName, PHASE_EXPECTED_STATUS, PHASE_REQUIRES_AGENT_BOUND_TO_TASK, TASK_TERMINAL_STATUSES as TERMINAL_STATUSES, TASK_ACTIVE_STATUS_SET as ACTIVE_TASK_STATUSES, TASK_OWNER_ROLES, effectiveTaskReviewRound, isSpecStagePhase, isTaskOpen,
|
|
9
|
-
import { buildProjectDriver, buildProjectPromptContext, makeDriverExec, } from '../platform/driver-host.js';
|
|
8
|
+
import { BRANCH_PREFIX, isValidBranchName, PHASE_EXPECTED_STATUS, PHASE_REQUIRES_AGENT_BOUND_TO_TASK, TASK_TERMINAL_STATUSES as TERMINAL_STATUSES, TASK_ACTIVE_STATUS_SET as ACTIVE_TASK_STATUSES, TASK_OWNER_ROLES, effectiveTaskReviewRound, isSpecStagePhase, isTaskOpen, taskAttentionGeneration, taskGenerationGuard, taskReviewRound, taskMatchesGeneration, } from '../shared/index.js';
|
|
9
|
+
import { buildProjectDriver, buildProjectPromptContext, makeDriverExec, repoIdentityKey, } from '../platform/driver-host.js';
|
|
10
10
|
import { DriverOpError, safeDriverErrorText, validateCommentBody, } from '../platform/types.js';
|
|
11
11
|
import { versionTimeOf } from '../platform/row-schema.js';
|
|
12
12
|
import { checkOpenPrBinding, checkPrBinding } from '../platform/pr-binding.js';
|