baxian 2.0.5 → 2.0.7
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 +5 -5
- package/README.zh-CN.md +5 -5
- package/dist/agent/bootstrap-poller.d.ts +2 -2
- package/dist/agent/bootstrap-poller.d.ts.map +1 -1
- package/dist/agent/bootstrap-poller.js.map +1 -1
- package/dist/agent/bootstrap.d.ts +1 -1
- package/dist/agent/bootstrap.d.ts.map +1 -1
- package/dist/agent/bootstrap.js +24 -48
- package/dist/agent/bootstrap.js.map +1 -1
- package/dist/agent/manager.d.ts +9 -35
- package/dist/agent/manager.d.ts.map +1 -1
- package/dist/agent/manager.js +86 -335
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/net-exec.d.ts +0 -1
- package/dist/agent/net-exec.d.ts.map +1 -1
- package/dist/agent/net-exec.js +0 -1
- package/dist/agent/net-exec.js.map +1 -1
- package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
- package/dist/agent/pane-streamer-manager.js +1 -3
- package/dist/agent/pane-streamer-manager.js.map +1 -1
- package/dist/agent/preflight.d.ts +1 -20
- package/dist/agent/preflight.d.ts.map +1 -1
- package/dist/agent/preflight.js +39 -122
- package/dist/agent/preflight.js.map +1 -1
- package/dist/agent/prompt.d.ts +6 -16
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +128 -79
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/repo-store.d.ts +1 -5
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +8 -33
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/runner.d.ts +1 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +1 -3
- package/dist/agent/runner.js.map +1 -1
- package/dist/api/config.d.ts +1 -2
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +5 -22
- package/dist/api/config.js.map +1 -1
- package/dist/api/platform-guard.d.ts.map +1 -1
- package/dist/api/platform-guard.js +5 -15
- package/dist/api/platform-guard.js.map +1 -1
- package/dist/api/projects.d.ts.map +1 -1
- package/dist/api/projects.js +18 -25
- package/dist/api/projects.js.map +1 -1
- package/dist/api/tasks.js +2 -2
- package/dist/api/tasks.js.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/config/backup.d.ts +1 -3
- package/dist/config/backup.d.ts.map +1 -1
- package/dist/config/backup.js +28 -82
- package/dist/config/backup.js.map +1 -1
- package/dist/config/hot-reload.d.ts +3 -2
- package/dist/config/hot-reload.d.ts.map +1 -1
- package/dist/config/hot-reload.js +6 -16
- package/dist/config/hot-reload.js.map +1 -1
- package/dist/config/loader.d.ts +3 -10
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +53 -67
- package/dist/config/loader.js.map +1 -1
- package/dist/config/validator.d.ts +2 -8
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +42 -120
- package/dist/config/validator.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -39
- package/dist/index.js.map +1 -1
- package/dist/platform/driver-host.d.ts +4 -3
- package/dist/platform/driver-host.d.ts.map +1 -1
- package/dist/platform/driver-host.js +12 -11
- package/dist/platform/driver-host.js.map +1 -1
- package/dist/platform/feedback.d.ts +5 -6
- package/dist/platform/feedback.d.ts.map +1 -1
- package/dist/platform/feedback.js +4 -7
- package/dist/platform/feedback.js.map +1 -1
- package/dist/platform/github-driver.d.ts +36 -0
- package/dist/platform/github-driver.d.ts.map +1 -0
- package/dist/platform/github-driver.js +374 -0
- package/dist/platform/github-driver.js.map +1 -0
- package/dist/platform/markers.d.ts +1 -4
- package/dist/platform/markers.d.ts.map +1 -1
- package/dist/platform/markers.js +0 -8
- package/dist/platform/markers.js.map +1 -1
- package/dist/platform/platform-poller.d.ts +2 -17
- package/dist/platform/platform-poller.d.ts.map +1 -1
- package/dist/platform/platform-poller.js +9 -15
- package/dist/platform/platform-poller.js.map +1 -1
- package/dist/platform/response-parser.d.ts.map +1 -1
- package/dist/platform/response-parser.js +6 -63
- package/dist/platform/response-parser.js.map +1 -1
- package/dist/platform/review-timeline.d.ts +6 -8
- package/dist/platform/review-timeline.d.ts.map +1 -1
- package/dist/platform/review-timeline.js +4 -6
- package/dist/platform/review-timeline.js.map +1 -1
- package/dist/platform/row-schema.d.ts +1 -2
- package/dist/platform/row-schema.d.ts.map +1 -1
- package/dist/platform/row-schema.js +13 -1
- package/dist/platform/row-schema.js.map +1 -1
- package/dist/platform/startup.d.ts +6 -34
- package/dist/platform/startup.d.ts.map +1 -1
- package/dist/platform/startup.js +10 -109
- package/dist/platform/startup.js.map +1 -1
- package/dist/platform/types.d.ts +61 -54
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/platform/types.js +38 -26
- package/dist/platform/types.js.map +1 -1
- package/dist/platform/verdict-engine.d.ts +1 -1
- package/dist/platform/verdict-engine.d.ts.map +1 -1
- package/dist/platform/verdict-engine.js +1 -1
- package/dist/platform/verdict-engine.js.map +1 -1
- package/dist/shared/constants.d.ts +2 -9
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -20
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/git-url.d.ts +0 -14
- package/dist/shared/git-url.d.ts.map +1 -1
- package/dist/shared/git-url.js +4 -57
- package/dist/shared/git-url.js.map +1 -1
- package/dist/shared/types.d.ts +2 -10
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/state/agent-store.js +0 -3
- package/dist/state/agent-store.js.map +1 -1
- package/dist/state/task-store.js +2 -2
- package/dist/state/task-store.js.map +1 -1
- package/dist/web/assets/index-KH_4rYrI.js +15 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/config/normalizer.d.ts +0 -2
- package/dist/config/normalizer.d.ts.map +0 -1
- package/dist/config/normalizer.js +0 -46
- package/dist/config/normalizer.js.map +0 -1
- package/dist/platform/command-renderer.d.ts +0 -29
- package/dist/platform/command-renderer.d.ts.map +0 -1
- package/dist/platform/command-renderer.js +0 -113
- package/dist/platform/command-renderer.js.map +0 -1
- package/dist/platform/driver-spec.d.ts +0 -7
- package/dist/platform/driver-spec.d.ts.map +0 -1
- package/dist/platform/driver-spec.js +0 -506
- package/dist/platform/driver-spec.js.map +0 -1
- package/dist/platform/field-mapper.d.ts +0 -7
- package/dist/platform/field-mapper.d.ts.map +0 -1
- package/dist/platform/field-mapper.js +0 -109
- package/dist/platform/field-mapper.js.map +0 -1
- package/dist/platform/git-driver.d.ts +0 -64
- package/dist/platform/git-driver.d.ts.map +0 -1
- package/dist/platform/git-driver.js +0 -230
- package/dist/platform/git-driver.js.map +0 -1
- package/dist/platform/manifest.d.ts +0 -11
- package/dist/platform/manifest.d.ts.map +0 -1
- package/dist/platform/manifest.js +0 -42
- package/dist/platform/manifest.js.map +0 -1
- package/dist/platform/plugin-registry.d.ts +0 -31
- package/dist/platform/plugin-registry.d.ts.map +0 -1
- package/dist/platform/plugin-registry.js +0 -239
- package/dist/platform/plugin-registry.js.map +0 -1
- package/dist/platform/plugin-roots.d.ts +0 -3
- package/dist/platform/plugin-roots.d.ts.map +0 -1
- package/dist/platform/plugin-roots.js +0 -11
- package/dist/platform/plugin-roots.js.map +0 -1
- package/dist/platform/plugins/github/baxian-plugin.json +0 -8
- package/dist/platform/plugins/github/driver.json +0 -153
- package/dist/platform/plugins/github/skills/baxian-cli-gh/SKILL.md +0 -115
- package/dist/platform/plugins/github/skills/baxian-cli-gh/agents/openai.yaml +0 -2
- package/dist/platform/preflight-exec.d.ts +0 -21
- package/dist/platform/preflight-exec.d.ts.map +0 -1
- package/dist/platform/preflight-exec.js +0 -53
- package/dist/platform/preflight-exec.js.map +0 -1
- package/dist/skill/registry.d.ts +0 -37
- package/dist/skill/registry.d.ts.map +0 -1
- package/dist/skill/registry.js +0 -234
- package/dist/skill/registry.js.map +0 -1
- package/dist/skills/baxian-greeting/SKILL.md +0 -15
- package/dist/skills/baxian-greeting/agents/openai.yaml +0 -2
- package/dist/skills/baxian-pr-feedback/SKILL.md +0 -41
- package/dist/skills/baxian-pr-feedback/agents/openai.yaml +0 -2
- package/dist/skills/baxian-pr-recheck/SKILL.md +0 -27
- package/dist/skills/baxian-pr-recheck/agents/openai.yaml +0 -2
- package/dist/skills/baxian-pr-review/SKILL.md +0 -33
- package/dist/skills/baxian-pr-review/agents/openai.yaml +0 -2
- package/dist/skills/baxian-signals/SKILL.md +0 -86
- package/dist/skills/baxian-signals/agents/openai.yaml +0 -2
- package/dist/skills/baxian-task-check/SKILL.md +0 -52
- package/dist/skills/baxian-task-check/agents/openai.yaml +0 -2
- package/dist/web/assets/index-CzVzThuT.js +0 -15
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ baxian is **tmux-native**. An agent is just an interactive Claude Code or Codex
|
|
|
28
28
|
|
|
29
29
|
- **Terminal wall** — the dashboard embeds every agent's live terminal (streamed over WebSocket, rendered with xterm.js). Click a pane to type into the real session; no context switching to find out what an agent is doing.
|
|
30
30
|
- **Automated review loop** — QA publishes findings on the pull request, Dev resolves each with a fix and commit or a concrete rejection rationale, and QA rechecks until the verdict is `approve`.
|
|
31
|
-
- **Reviews happen on real pull requests** — branch-per-task, automatic PR creation, and review polling through
|
|
31
|
+
- **Reviews happen on real pull requests** — branch-per-task, automatic GitHub PR creation, and review polling through `gh` (install and authenticate it separately); with `merge: "auto"`, baxian merges the PR itself once you confirm the approved task.
|
|
32
32
|
- **Human spec gate (optional)** — with `specApproval: "human"` on a project, a task that starts with a spec parks at `spec-ready` once QA approves the spec, and 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
|
- **No API keys** — agents run the interactive Claude Code / Codex CLIs, so your existing subscriptions are the only credentials involved.
|
|
@@ -70,7 +70,7 @@ The server owns task and agent-binding state, drives agents through their tmux p
|
|
|
70
70
|
> - **Node.js ≥ 22.13**
|
|
71
71
|
> - **tmux** on every machine that runs agents (local and remote)
|
|
72
72
|
> - **Claude Code** (`claude`) and/or **Codex** (`codex`) CLI installed and logged in
|
|
73
|
-
> - **git
|
|
73
|
+
> - **git** with repository read/write credentials, and an authenticated **GitHub CLI** (`gh`). For private HTTPS repositories, run `gh auth setup-git` on every agent host.
|
|
74
74
|
>
|
|
75
75
|
> The CLI must be authenticated on every machine that runs agents, and on the server itself: the server calls it to poll reviews, merge, and close PRs, while agents call it to open PRs and post comments.
|
|
76
76
|
|
|
@@ -81,7 +81,7 @@ npm install -g baxian
|
|
|
81
81
|
baxian
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
Open <http://localhost:3000>. The first run creates `~/.baxian/
|
|
84
|
+
Open <http://localhost:3000>. The first run creates `~/.baxian/baxian.json` for you.
|
|
85
85
|
|
|
86
86
|
Then, in the console:
|
|
87
87
|
|
|
@@ -93,6 +93,7 @@ Then, in the console:
|
|
|
93
93
|
|
|
94
94
|
```sh
|
|
95
95
|
baxian # start the server (default command)
|
|
96
|
+
baxian --home <dir> # use a separate instance home (or set BAXIAN_HOME)
|
|
96
97
|
baxian status # status of all agents
|
|
97
98
|
baxian attach <agent-id> # attach to an agent's tmux session, local or remote
|
|
98
99
|
baxian stop <agent-id> # interrupt an agent
|
|
@@ -102,7 +103,7 @@ baxian task list -p <project>
|
|
|
102
103
|
|
|
103
104
|
## Configuration
|
|
104
105
|
|
|
105
|
-
baxian reads
|
|
106
|
+
baxian reads `<home>/baxian.json`, where `<home>` defaults to `~/.baxian`. Override the instance home with `baxian --home <dir>` or `BAXIAN_HOME`; the CLI option takes precedence. The working directory is never searched for configuration. A minimal configuration:
|
|
106
107
|
|
|
107
108
|
```json
|
|
108
109
|
{
|
|
@@ -138,7 +139,6 @@ Useful options:
|
|
|
138
139
|
| `server.token` | Bearer token protecting the API and web console |
|
|
139
140
|
| `project[].merge` | `"auto"`: baxian merges the PR itself once you confirm the approved task; `null`: merge by hand |
|
|
140
141
|
| `project[].specApproval` | `"human"`: after QA approves a spec, park at `spec-ready` for your sign-off; `null` (default): QA approval moves straight to coding |
|
|
141
|
-
| `project[].gitCli.tool` | Which platform CLI drives pull-request reviews. GitHub repos resolve `gh` automatically; any other host must name its tool (and have a matching driver plugin installed) |
|
|
142
142
|
| `project[].agent[][].mode` + `host` | `local`, or `remote` with a host id for SSH-managed agents |
|
|
143
143
|
|
|
144
144
|
## License
|
package/README.zh-CN.md
CHANGED
|
@@ -28,7 +28,7 @@ baxian 是 **tmux 原生**的。一个 agent 就是 tmux session 里的一个交
|
|
|
28
28
|
|
|
29
29
|
- **终端墙** —— 控制台内嵌每个 agent 的实时终端(WebSocket 推流、xterm.js 渲染)。点击任意窗格即可向真实会话输入,无需切换窗口就能看清每个 agent 在做什么。
|
|
30
30
|
- **自动评审循环** —— QA 在 pull request 上发布评审意见,Dev 逐条修复并给出提交,或说明拒绝理由,再由 QA 复审,循环直到结论为 `approve`。
|
|
31
|
-
- **评审发生在真实的 PR 上** ——
|
|
31
|
+
- **评审发生在真实的 PR 上** —— 每任务一个分支、自动创建 GitHub PR,并通过 `gh`(需另行安装并认证)轮询评审动态;项目设置 `merge: "auto"` 时,任务通过并经你确认后由 baxian 代为合并 PR。
|
|
32
32
|
- **Spec 人审门禁(可选)** —— 项目配置 `specApproval: "human"` 后,走规格稿路线的任务在 QA 通过规格稿时停驻在 `spec-ready`,等你签字确认才开始编码。
|
|
33
33
|
- **本地与远程 agent** —— agent 可以跑在任何 SSH 可达的机器上,远端 tmux 会话由 baxian 代管。
|
|
34
34
|
- **不需要 API key** —— agent 运行的是交互式 Claude Code / Codex CLI,凭证只有你已有的订阅账号。
|
|
@@ -70,7 +70,7 @@ server 持有任务和 agent 绑定状态,通过 tmux pane 驱动 agent,并
|
|
|
70
70
|
> - **Node.js ≥ 22.13**
|
|
71
71
|
> - 每台跑 agent 的机器(本地与远程)都装有 **tmux**
|
|
72
72
|
> - **Claude Code**(`claude`)和/或 **Codex**(`codex`)CLI 已安装并登录
|
|
73
|
-
> - **git
|
|
73
|
+
> - 已配置仓库读写凭据的 **git**,以及已认证的 **GitHub CLI**(`gh`)。私有 HTTPS 仓库需在每台 agent 主机上执行 `gh auth setup-git`。
|
|
74
74
|
>
|
|
75
75
|
> 该 CLI 需要在每台跑 agent 的机器上、以及 server 本机都完成认证:server 用它轮询评审、合并与关闭 PR,agent 用它开 PR 与发评论。
|
|
76
76
|
|
|
@@ -81,7 +81,7 @@ npm install -g baxian
|
|
|
81
81
|
baxian
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
打开 <http://localhost:3000>。首次运行会自动创建 `~/.baxian/
|
|
84
|
+
打开 <http://localhost:3000>。首次运行会自动创建 `~/.baxian/baxian.json`。
|
|
85
85
|
|
|
86
86
|
然后在控制台里:
|
|
87
87
|
|
|
@@ -93,6 +93,7 @@ baxian
|
|
|
93
93
|
|
|
94
94
|
```sh
|
|
95
95
|
baxian # 启动 server(默认命令)
|
|
96
|
+
baxian --home <dir> # 使用独立实例 home(也可设置 BAXIAN_HOME)
|
|
96
97
|
baxian status # 查看所有 agent 状态
|
|
97
98
|
baxian attach <agent-id> # 接入 agent 的 tmux 会话(本地或远程)
|
|
98
99
|
baxian stop <agent-id> # 打断一个 agent
|
|
@@ -102,7 +103,7 @@ baxian task list -p <project>
|
|
|
102
103
|
|
|
103
104
|
## 配置
|
|
104
105
|
|
|
105
|
-
baxian
|
|
106
|
+
baxian 固定读取 `<home>/baxian.json`,`<home>` 默认为 `~/.baxian`。可通过 `baxian --home <dir>` 或 `BAXIAN_HOME` 覆盖实例 home,CLI 参数优先;工作目录中的配置不会被隐式发现。最小配置:
|
|
106
107
|
|
|
107
108
|
```json
|
|
108
109
|
{
|
|
@@ -138,7 +139,6 @@ baxian 优先读取工作目录下的 `./baxian.json`,找不到时回退到 `~
|
|
|
138
139
|
| `server.token` | 保护 API 与 Web 控制台的 Bearer token |
|
|
139
140
|
| `project[].merge` | `"auto"`:任务通过并经你确认后,由 baxian 代为合并 PR;`null`:手动合并 |
|
|
140
141
|
| `project[].specApproval` | `"human"`:QA 通过规格稿后停驻 `spec-ready` 等你确认;`null`(默认):QA 通过即进入编码 |
|
|
141
|
-
| `project[].gitCli.tool` | 由哪个平台 CLI 驱动 PR 评审。GitHub 仓库自动解析为 `gh`;其它平台必须声明,并安装对应的驱动插件 |
|
|
142
142
|
| `project[].agent[][].mode` + `host` | `local` 本地运行,或 `remote` 配主机 id 走 SSH 代管 |
|
|
143
143
|
|
|
144
144
|
## 许可证
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BaxianConfig, AgentConfig } from '../shared/index.js';
|
|
1
|
+
import type { BaxianConfig, AgentConfig, HostConfig } from '../shared/index.js';
|
|
2
2
|
import type { AgentStore } from '../state/agent-store.js';
|
|
3
3
|
import type { EventBus } from '../event/bus.js';
|
|
4
4
|
import type { ErrorRecordStore } from '../state/error-record-store.js';
|
|
@@ -11,7 +11,7 @@ export interface BootstrapPollerOptions {
|
|
|
11
11
|
repoCache: RepoStoreCache;
|
|
12
12
|
errorRecordStore?: ErrorRecordStore;
|
|
13
13
|
runnerFactory?: (agent: AgentConfig) => CommandRunner;
|
|
14
|
-
repoStoreFactory?: (runner: CommandRunner, repoSlug: string, mode: AgentConfig['mode'], host:
|
|
14
|
+
repoStoreFactory?: (runner: CommandRunner, repoSlug: string, mode: AgentConfig['mode'], host: HostConfig | undefined, cache: RepoStoreCache, agentId: string, workdir?: string) => RepoStore;
|
|
15
15
|
onAgentAffected?: (agentIds: string[]) => void;
|
|
16
16
|
onPollComplete?: () => Promise<void>;
|
|
17
17
|
intervalMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-poller.d.ts","sourceRoot":"","sources":["../../src/agent/bootstrap-poller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap-poller.d.ts","sourceRoot":"","sources":["../../src/agent/bootstrap-poller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,CAAC;IACtD,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,KACb,SAAS,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,cAAc,CAAS;gBAEnB,OAAO,EAAE,sBAAsB;IAW3C,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAa5C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;YAsBpF,WAAW;CAkB1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-poller.js","sourceRoot":"","sources":["../../src/agent/bootstrap-poller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap-poller.js","sourceRoot":"","sources":["../../src/agent/bootstrap-poller.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export interface BootstrapDeps {
|
|
|
11
11
|
repoCache: RepoStoreCache;
|
|
12
12
|
errorRecordStore?: ErrorRecordStore;
|
|
13
13
|
runnerFactory?: (agent: AgentConfig) => CommandRunner;
|
|
14
|
-
repoStoreFactory?: (runner: CommandRunner, repo: string, mode: AgentConfig['mode'], host: HostConfig | undefined, cache: RepoStoreCache, agentId: string, workdir?: string
|
|
14
|
+
repoStoreFactory?: (runner: CommandRunner, repo: string, mode: AgentConfig['mode'], host: HostConfig | undefined, cache: RepoStoreCache, agentId: string, workdir?: string) => RepoStore;
|
|
15
15
|
onAgentAffected?: (agentIds: string[]) => void;
|
|
16
16
|
}
|
|
17
17
|
export interface BootstrapTarget {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/agent/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAe,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE5G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/agent/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAe,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE5G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,CAAC;IACtD,gBAAgB,CAAC,EAAE,CACjB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,KACb,SAAS,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mBAAmB,EAAE,WAAW,CAAC;IACjC,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAWvE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,EAAE,CAYtE;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CA8EhC;AAsBD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAoBA"}
|
package/dist/agent/bootstrap.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { redactGitCredentials } from '../shared/index.js';
|
|
2
2
|
import { createRunner, resolveAgentHost } from './runner.js';
|
|
3
3
|
import { RepoStore } from './repo-store.js';
|
|
4
4
|
import { AGENT_STORE_NOOP } from '../state/agent-store.js';
|
|
5
|
-
import { resolveProjectTool } from '../config/validator.js';
|
|
6
5
|
export async function bootstrapAutoRepos(deps) {
|
|
7
6
|
const targets = collectTargets(deps.config);
|
|
8
7
|
await Promise.allSettled(targets.map(target => runSingleTarget(target, deps, { emitOnUnchanged: true })));
|
|
@@ -42,10 +41,9 @@ export async function runSingleTarget(target, deps, opts) {
|
|
|
42
41
|
const runner = deps.runnerFactory
|
|
43
42
|
? deps.runnerFactory(rep)
|
|
44
43
|
: createRunner(rep.mode, target.resolvedHost);
|
|
45
|
-
const cloneViaGh = resolveProjectTool(target.project) === 'gh';
|
|
46
44
|
const repoStore = deps.repoStoreFactory
|
|
47
|
-
? deps.repoStoreFactory(runner, target.project.repo, rep.mode, target.resolvedHost, deps.repoCache, rep.id, rep.workdir
|
|
48
|
-
: new RepoStore(runner, target.project.repo, rep.mode, target.resolvedHost, deps.repoCache, rep.id, rep.workdir
|
|
45
|
+
? deps.repoStoreFactory(runner, target.project.repo, rep.mode, target.resolvedHost, deps.repoCache, rep.id, rep.workdir)
|
|
46
|
+
: new RepoStore(runner, target.project.repo, rep.mode, target.resolvedHost, deps.repoCache, rep.id, rep.workdir);
|
|
49
47
|
workdir = await repoStore.ensure();
|
|
50
48
|
}
|
|
51
49
|
catch (err) {
|
|
@@ -112,63 +110,41 @@ export async function runSingleTarget(target, deps, opts) {
|
|
|
112
110
|
}
|
|
113
111
|
return { ok: false, failureMessage: message };
|
|
114
112
|
}
|
|
115
|
-
const
|
|
116
|
-
/
|
|
117
|
-
/
|
|
118
|
-
|
|
113
|
+
const REPOSITORY_ACCESS_PATTERNS = [
|
|
114
|
+
/repository(?:[^\n]*?)not found/i,
|
|
115
|
+
/could not read (?:Username|Password)/i,
|
|
116
|
+
/authentication failed/i,
|
|
117
|
+
/permission denied \(publickey\)/i,
|
|
119
118
|
];
|
|
120
|
-
const
|
|
119
|
+
const AMBIGUOUS_ACCESS_PATTERNS = [
|
|
121
120
|
/permission denied/i,
|
|
122
|
-
/authentication failed/i,
|
|
123
121
|
/access denied/i,
|
|
124
|
-
/\b(HTTP\s+)?404\b
|
|
122
|
+
/\b(?:HTTP\s+)?(?:401|403|404)\b/i,
|
|
125
123
|
];
|
|
126
|
-
const
|
|
127
|
-
/
|
|
128
|
-
|
|
124
|
+
const GIT_ACCESS_CONTEXT_PATTERNS = [
|
|
125
|
+
/\bgit (?:clone|fetch|ls-remote)\b/i,
|
|
126
|
+
/(?:https?|ssh):\/\//i,
|
|
127
|
+
/\bgit@/i,
|
|
129
128
|
/\(publickey\)/i,
|
|
130
|
-
/gh repo/i,
|
|
131
|
-
/^gh:\s/m,
|
|
132
129
|
];
|
|
133
130
|
export function classifyBootstrapError(message, repo) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
reason: 'BOOTSTRAP_REPO_ACCESS_DENIED',
|
|
142
|
-
message: `GitHub repo "${repo}" not found or access denied (underlying error: ${message}).`,
|
|
143
|
-
recommendation: `Verify the repo URL and grant the host's gh account collaborator access to "${repo}", then retry.`,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
return {
|
|
147
|
-
reason: 'BOOTSTRAP_REPO_ENSURE_FAILED',
|
|
148
|
-
message,
|
|
149
|
-
recommendation: 'Check repository access and retry bootstrap.',
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
function classifyGenericGitError(message, repo) {
|
|
153
|
-
const host = parseGitRemote(repo)?.host;
|
|
154
|
-
const gitContext = /(?:https?|ssh):\/\//i.test(message)
|
|
155
|
-
|| /\bgit@/.test(message)
|
|
156
|
-
|| /\(publickey\)/i.test(message);
|
|
157
|
-
const accessDenied = gitContext && (GENERIC_AUTH_PATTERNS.some(re => re.test(message))
|
|
158
|
-
|| /could not read (?:Username|Password)/i.test(message)
|
|
159
|
-
|| /\brepository\b[\s\S]*?\bnot found\b/i.test(message)
|
|
160
|
-
|| /could not be found/i.test(message));
|
|
131
|
+
const safeMessage = redactGitCredentials(message);
|
|
132
|
+
const localFilesystemFailure = /\b(?:EACCES|EPERM)\b/i.test(message)
|
|
133
|
+
|| /permission denied[\s\S]*?\b(?:mkdir|open|write|unlink|rename)\b/i.test(message);
|
|
134
|
+
const accessDenied = !localFilesystemFailure
|
|
135
|
+
&& (REPOSITORY_ACCESS_PATTERNS.some(re => re.test(message))
|
|
136
|
+
|| (AMBIGUOUS_ACCESS_PATTERNS.some(re => re.test(message))
|
|
137
|
+
&& GIT_ACCESS_CONTEXT_PATTERNS.some(re => re.test(message))));
|
|
161
138
|
if (accessDenied) {
|
|
162
139
|
return {
|
|
163
140
|
reason: 'BOOTSTRAP_REPO_ACCESS_DENIED',
|
|
164
|
-
message:
|
|
165
|
-
recommendation:
|
|
166
|
-
`${host ?? 'this host'}, then retry.`,
|
|
141
|
+
message: `Repository "${redactGitCredentials(repo)}" not found or access denied (underlying error: ${safeMessage}).`,
|
|
142
|
+
recommendation: 'Verify the repo URL and this host\'s HTTPS credential helper or SSH key, then retry.',
|
|
167
143
|
};
|
|
168
144
|
}
|
|
169
145
|
return {
|
|
170
146
|
reason: 'BOOTSTRAP_REPO_ENSURE_FAILED',
|
|
171
|
-
message,
|
|
147
|
+
message: safeMessage,
|
|
172
148
|
recommendation: 'Check repository access and retry bootstrap.',
|
|
173
149
|
};
|
|
174
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/agent/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/agent/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/manager.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { type AgentGitPreflight } from './preflight.js';
|
|
2
1
|
import type { BaxianConfig, AgentConfig, AgentRuntimeConfig, AgentBindingFacts, BaxianEvent, HostConfig, ProjectConfig, ReviewDispatchLease, TaskOutboxEntry, TaskPhase, TaskGenerationGuard, TaskState, TaskStatus } from '../shared/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import type { PluginRegistry } from '../platform/plugin-registry.js';
|
|
2
|
+
import { type PlatformDriver, type PlatformPromptContext } from '../platform/types.js';
|
|
5
3
|
import { type NormalizedRow } from '../platform/row-schema.js';
|
|
6
4
|
import { type PrRejection } from '../platform/pr-binding.js';
|
|
7
5
|
import { type PendingFeedbackResult } from '../platform/feedback.js';
|
|
@@ -12,21 +10,19 @@ import type { TaskStore } from '../state/task-store.js';
|
|
|
12
10
|
import type { LockManager } from '../state/lock.js';
|
|
13
11
|
import type { EventBus } from '../event/bus.js';
|
|
14
12
|
import type { ErrorRecordStore } from '../state/error-record-store.js';
|
|
15
|
-
import { SkillRegistry } from '../skill/registry.js';
|
|
16
13
|
import type { CommandRunner } from './runner.js';
|
|
17
14
|
import { type TmuxSessionRef, type PaneRef } from './tmux.js';
|
|
18
15
|
import { RepoStore, type RepoStoreCache } from './repo-store.js';
|
|
19
16
|
import type { PaneStreamerManager } from './pane-streamer-manager.js';
|
|
20
17
|
import { PhaseSignalWatcher, type NeedInputCommitIntent, type NeedInputCommitResult } from './phase-signal-watcher.js';
|
|
21
18
|
import type { PhaseSignalKind } from './phase-signal.js';
|
|
22
|
-
import { type PostMergeCleanupContext
|
|
19
|
+
import { type PostMergeCleanupContext } from './prompt.js';
|
|
23
20
|
import { ApiError } from '../errors.js';
|
|
24
21
|
export declare function isBenignDispatchConflict(err: unknown): err is ApiError;
|
|
25
22
|
export interface EnsureSessionResult {
|
|
26
23
|
ok: true;
|
|
27
24
|
createdSession: boolean;
|
|
28
25
|
freshRuntime: boolean;
|
|
29
|
-
skillsStale?: true;
|
|
30
26
|
paneId: string;
|
|
31
27
|
pane: PaneRef;
|
|
32
28
|
workdir: string;
|
|
@@ -54,7 +50,7 @@ export declare class EnsureSessionError extends Error {
|
|
|
54
50
|
lastScreen?: string;
|
|
55
51
|
}, message: string);
|
|
56
52
|
}
|
|
57
|
-
export type DispatchTerminalReason = 'runtime_ack_timeout' | 'ack_unknown' | 'gate_failed' | 'prompt_too_large' | '
|
|
53
|
+
export type DispatchTerminalReason = 'runtime_ack_timeout' | 'ack_unknown' | 'gate_failed' | 'prompt_too_large' | 'task_image_missing';
|
|
58
54
|
export declare class CleanupFailedError extends Error {
|
|
59
55
|
readonly failures: Array<{
|
|
60
56
|
agentId: string;
|
|
@@ -109,20 +105,17 @@ export type DeletionClaimOutcome = {
|
|
|
109
105
|
};
|
|
110
106
|
export declare function buildLaunchCommand(agent: AgentRuntimeConfig): string;
|
|
111
107
|
export declare function launchCommandIn(dir: string, agent: AgentRuntimeConfig): string;
|
|
112
|
-
export declare function skillSubdirFor(runtime: AgentRuntimeConfig['runtime']): string;
|
|
113
108
|
export interface AgentManagerDeps {
|
|
114
109
|
config: BaxianConfig;
|
|
115
110
|
agentStore: AgentStore;
|
|
116
111
|
taskStore: TaskStore;
|
|
117
112
|
lockManager: LockManager;
|
|
118
113
|
eventBus: EventBus;
|
|
119
|
-
skillRegistry?: SkillRegistry;
|
|
120
114
|
runnerFactory?: (agent: AgentConfig) => CommandRunner;
|
|
121
115
|
platformRunner?: CommandRunner;
|
|
122
116
|
imageStagingRoot?: string;
|
|
123
117
|
repoStoreFactory?: (runner: CommandRunner, repoSlug: string, mode: AgentConfig['mode'], host: HostConfig | undefined, cache: RepoStoreCache, agentId: string, workdir?: string) => RepoStore;
|
|
124
118
|
paneStreamerManager?: PaneStreamerManager;
|
|
125
|
-
pluginRegistry?: PluginRegistry;
|
|
126
119
|
platformDefaultBranchOf?: (projectId: string) => string | undefined;
|
|
127
120
|
prConversationCache?: PrConversationCache;
|
|
128
121
|
phaseSignalWatcher?: PhaseSignalWatcher;
|
|
@@ -181,7 +174,6 @@ export interface PostApproveEpisodeKey {
|
|
|
181
174
|
}
|
|
182
175
|
type ReviewDispatchFence = Pick<ReviewDispatchLease, 'generation' | 'signalToken' | 'headSha' | 'passToken' | 'failToken' | 'effectiveRound' | 'qaPhase'>;
|
|
183
176
|
export declare function canDispatchWithBinding(binding: AgentBindingFacts | null | undefined): boolean;
|
|
184
|
-
export declare const RECOVERABLE_QA_DISPATCH_HOLD_PHASES: Set<string>;
|
|
185
177
|
export declare function isRecoverableQaDispatchHold(binding: AgentBindingFacts | null | undefined): boolean;
|
|
186
178
|
export interface PendingDispatchRetry {
|
|
187
179
|
kind: 'qa-recheck' | 'dev-fix';
|
|
@@ -215,12 +207,10 @@ export declare class AgentManager {
|
|
|
215
207
|
protected taskStore: TaskStore;
|
|
216
208
|
protected lockManager: LockManager;
|
|
217
209
|
protected eventBus: EventBus;
|
|
218
|
-
protected skillRegistry: SkillRegistry;
|
|
219
210
|
protected runnerFactory?: (agent: AgentConfig) => CommandRunner;
|
|
220
211
|
protected repoStoreFactory?: AgentManagerDeps['repoStoreFactory'];
|
|
221
212
|
protected repoCache: RepoStoreCache;
|
|
222
213
|
protected paneStreamerManager?: PaneStreamerManager;
|
|
223
|
-
protected pluginRegistry?: PluginRegistry;
|
|
224
214
|
private platformDefaultBranchOf?;
|
|
225
215
|
private readonly prConversationCache?;
|
|
226
216
|
private readonly platformDriverExec;
|
|
@@ -259,7 +249,7 @@ export declare class AgentManager {
|
|
|
259
249
|
private divergedAgents;
|
|
260
250
|
private deletionGeneration;
|
|
261
251
|
private compactInFlight;
|
|
262
|
-
private
|
|
252
|
+
private platformBindingInterventionKeys;
|
|
263
253
|
constructor(deps: AgentManagerDeps);
|
|
264
254
|
private withTaskLock;
|
|
265
255
|
private outsideTaskMutationScope;
|
|
@@ -271,14 +261,8 @@ export declare class AgentManager {
|
|
|
271
261
|
refreshWorkdirCacheFor(agentId: string): Promise<string | undefined>;
|
|
272
262
|
private safeEmit;
|
|
273
263
|
private emitIntervention;
|
|
274
|
-
emitConfigIntervention(projectId: string, data: Record<string, unknown> & {
|
|
275
|
-
phase: string;
|
|
276
|
-
}): Promise<void>;
|
|
277
|
-
configInterventionKey(projectId: string, data: Record<string, unknown> & {
|
|
278
|
-
phase: string;
|
|
279
|
-
}): string;
|
|
280
264
|
platformBindingInterventionKey(task: TaskState, mismatch: PlatformBindingMismatch): string;
|
|
281
|
-
|
|
265
|
+
retainPlatformBindingInterventionKeys(keys: ReadonlySet<string>): void;
|
|
282
266
|
emitPlatformBindingIntervention(task: TaskState, mismatch: PlatformBindingMismatch): Promise<void>;
|
|
283
267
|
private recordError;
|
|
284
268
|
replaceConfig(validated: BaxianConfig): void;
|
|
@@ -306,23 +290,15 @@ export declare class AgentManager {
|
|
|
306
290
|
expectedGeneration?: number;
|
|
307
291
|
}): Promise<EnsureSessionResult>;
|
|
308
292
|
private ensureSessionLocked;
|
|
309
|
-
private agentSkillScope;
|
|
310
|
-
private provisionRepoSkills;
|
|
311
293
|
private sessionLifecycleChain;
|
|
312
294
|
private adoptGeneration;
|
|
313
295
|
private runUnderSessionLifecycle;
|
|
314
296
|
private rollbackCreatedSession;
|
|
315
297
|
rollbackEnsureSessionFailure(agentId: string, err: unknown, reason: string): Promise<void>;
|
|
316
|
-
private skillDirChain;
|
|
317
|
-
private skillDirLockKey;
|
|
318
|
-
private runUnderSkillDirLock;
|
|
319
|
-
private atomicWriteFile;
|
|
320
|
-
private ensureSkillDirSafe;
|
|
321
|
-
private tagSessionSkillsVersion;
|
|
322
|
-
private replSkillsStale;
|
|
323
|
-
private excludeInjectedSkills;
|
|
324
298
|
private runtimePinEntries;
|
|
325
299
|
private setSessionOptions;
|
|
300
|
+
private taskContextForSession;
|
|
301
|
+
private rememberTaskContext;
|
|
326
302
|
private resolveClaimedPane;
|
|
327
303
|
private buildFreshSession;
|
|
328
304
|
private buildFreshSessionLocked;
|
|
@@ -462,7 +438,7 @@ export declare class AgentManager {
|
|
|
462
438
|
projectId: string;
|
|
463
439
|
}>;
|
|
464
440
|
getProjectConfig(projectId: string): ProjectConfig | undefined;
|
|
465
|
-
platformDriverFor(projectId: string):
|
|
441
|
+
platformDriverFor(projectId: string): PlatformDriver | undefined;
|
|
466
442
|
private findAgentTeam;
|
|
467
443
|
private longestDevWorkdirInProject;
|
|
468
444
|
getTask(taskId: string): Promise<TaskState | null>;
|
|
@@ -516,7 +492,6 @@ export declare class AgentManager {
|
|
|
516
492
|
rearmPostApproveSignal(taskId: string, opts?: {
|
|
517
493
|
skipSnapshot?: boolean;
|
|
518
494
|
}): Promise<boolean>;
|
|
519
|
-
ensurePluginSkillPools(next: BaxianConfig): Promise<void>;
|
|
520
495
|
guardGitConfigCommit(current: BaxianConfig, next: BaxianConfig, scan: (manager: AgentManager, current: BaxianConfig, next: BaxianConfig) => Promise<Array<{
|
|
521
496
|
projectId: string;
|
|
522
497
|
taskIds: string[];
|
|
@@ -588,8 +563,7 @@ export declare class AgentManager {
|
|
|
588
563
|
} | undefined>;
|
|
589
564
|
platformBindingFields(projectId: string): Partial<TaskState>;
|
|
590
565
|
private platformBindingFor;
|
|
591
|
-
|
|
592
|
-
platformCliContextOf(task: TaskState): PlatformCliDescriptor | undefined;
|
|
566
|
+
platformPromptContextOf(task: TaskState): PlatformPromptContext | undefined;
|
|
593
567
|
ensureGitBaseSnapshot(task: TaskState, phase: string): Promise<TaskState>;
|
|
594
568
|
noteReviewConversationRevision(taskId: string, conversation?: {
|
|
595
569
|
prNumber: number;
|