baxian 2.0.2 → 2.0.4
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 +2 -2
- package/README.zh-CN.md +3 -3
- package/dist/agent/bootstrap.js +4 -4
- package/dist/agent/branch.d.ts.map +1 -1
- package/dist/agent/branch.js +0 -7
- package/dist/agent/branch.js.map +1 -1
- package/dist/agent/detect/region.d.ts.map +1 -1
- package/dist/agent/detect/region.js +0 -3
- package/dist/agent/detect/region.js.map +1 -1
- package/dist/agent/dispatch-reconciler.d.ts +2 -0
- package/dist/agent/dispatch-reconciler.d.ts.map +1 -1
- package/dist/agent/dispatch-reconciler.js +48 -55
- package/dist/agent/dispatch-reconciler.js.map +1 -1
- package/dist/agent/lineage.d.ts.map +1 -1
- package/dist/agent/lineage.js +0 -9
- package/dist/agent/lineage.js.map +1 -1
- package/dist/agent/manager.d.ts +42 -8
- package/dist/agent/manager.d.ts.map +1 -1
- package/dist/agent/manager.js +717 -375
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/net-exec.d.ts.map +1 -1
- package/dist/agent/net-exec.js +0 -5
- 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 +0 -36
- package/dist/agent/pane-streamer-manager.js.map +1 -1
- package/dist/agent/pane-streamer.d.ts +6 -0
- package/dist/agent/pane-streamer.d.ts.map +1 -1
- package/dist/agent/pane-streamer.js +126 -83
- package/dist/agent/pane-streamer.js.map +1 -1
- package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
- package/dist/agent/phase-signal-watcher.js +2 -77
- package/dist/agent/phase-signal-watcher.js.map +1 -1
- package/dist/agent/phase-signal.d.ts +0 -1
- package/dist/agent/phase-signal.d.ts.map +1 -1
- package/dist/agent/phase-signal.js +0 -17
- package/dist/agent/phase-signal.js.map +1 -1
- package/dist/agent/preflight.d.ts.map +1 -1
- package/dist/agent/preflight.js +0 -18
- package/dist/agent/preflight.js.map +1 -1
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +0 -1
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +0 -38
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +0 -2
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/tmux-install.js +0 -1
- package/dist/agent/tmux-install.js.map +1 -1
- package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
- package/dist/agent/tmux-probe-poller.js +4 -11
- package/dist/agent/tmux-probe-poller.js.map +1 -1
- package/dist/agent/tmux.d.ts.map +1 -1
- package/dist/agent/tmux.js +0 -86
- package/dist/agent/tmux.js.map +1 -1
- package/dist/agent/vt-visible-text.d.ts +46 -1
- package/dist/agent/vt-visible-text.d.ts.map +1 -1
- package/dist/agent/vt-visible-text.js +639 -63
- package/dist/agent/vt-visible-text.js.map +1 -1
- package/dist/api/agents.d.ts.map +1 -1
- package/dist/api/agents.js +3 -49
- package/dist/api/agents.js.map +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +10 -59
- package/dist/api/config.js.map +1 -1
- package/dist/api/hosts.d.ts.map +1 -1
- package/dist/api/hosts.js +8 -63
- package/dist/api/hosts.js.map +1 -1
- package/dist/api/platform-guard.d.ts.map +1 -1
- package/dist/api/platform-guard.js +2 -3
- package/dist/api/platform-guard.js.map +1 -1
- package/dist/api/probe.d.ts.map +1 -1
- package/dist/api/probe.js +0 -1
- package/dist/api/probe.js.map +1 -1
- package/dist/api/projects.d.ts.map +1 -1
- package/dist/api/projects.js +15 -28
- package/dist/api/projects.js.map +1 -1
- package/dist/api/tasks.d.ts.map +1 -1
- package/dist/api/tasks.js +94 -58
- package/dist/api/tasks.js.map +1 -1
- package/dist/app.d.ts +2 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +0 -6
- package/dist/app.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -31
- package/dist/cli.js.map +1 -1
- package/dist/config/hot-reload.d.ts.map +1 -1
- package/dist/config/hot-reload.js +0 -4
- package/dist/config/hot-reload.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +6 -29
- package/dist/config/loader.js.map +1 -1
- package/dist/config/normalizer.d.ts.map +1 -1
- package/dist/config/normalizer.js +0 -19
- package/dist/config/normalizer.js.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +31 -229
- package/dist/config/validator.js.map +1 -1
- package/dist/event/handlers.d.ts.map +1 -1
- package/dist/event/handlers.js +3 -11
- package/dist/event/handlers.js.map +1 -1
- package/dist/event/log.js +0 -2
- package/dist/event/log.js.map +1 -1
- package/dist/event/ws.d.ts.map +1 -1
- package/dist/event/ws.js +3 -3
- package/dist/event/ws.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -46
- package/dist/index.js.map +1 -1
- package/dist/platform/body-digest.d.ts.map +1 -1
- package/dist/platform/body-digest.js +0 -4
- package/dist/platform/body-digest.js.map +1 -1
- package/dist/platform/command-renderer.d.ts.map +1 -1
- package/dist/platform/command-renderer.js +0 -3
- package/dist/platform/command-renderer.js.map +1 -1
- package/dist/platform/comment-cursor.d.ts.map +1 -1
- package/dist/platform/comment-cursor.js +0 -21
- package/dist/platform/comment-cursor.js.map +1 -1
- package/dist/platform/driver-spec.d.ts.map +1 -1
- package/dist/platform/driver-spec.js +1 -42
- package/dist/platform/driver-spec.js.map +1 -1
- package/dist/platform/feedback.d.ts +5 -1
- package/dist/platform/feedback.d.ts.map +1 -1
- package/dist/platform/feedback.js +7 -1
- package/dist/platform/feedback.js.map +1 -1
- package/dist/platform/field-mapper.d.ts.map +1 -1
- package/dist/platform/field-mapper.js +3 -11
- package/dist/platform/field-mapper.js.map +1 -1
- package/dist/platform/git-driver.d.ts.map +1 -1
- package/dist/platform/git-driver.js +0 -20
- package/dist/platform/git-driver.js.map +1 -1
- package/dist/platform/manifest.d.ts.map +1 -1
- package/dist/platform/manifest.js +0 -3
- package/dist/platform/manifest.js.map +1 -1
- package/dist/platform/markers.d.ts.map +1 -1
- package/dist/platform/markers.js +0 -19
- package/dist/platform/markers.js.map +1 -1
- package/dist/platform/platform-poller.d.ts +5 -1
- package/dist/platform/platform-poller.d.ts.map +1 -1
- package/dist/platform/platform-poller.js +8 -49
- package/dist/platform/platform-poller.js.map +1 -1
- package/dist/platform/plugin-registry.d.ts.map +1 -1
- package/dist/platform/plugin-registry.js +1 -12
- package/dist/platform/plugin-registry.js.map +1 -1
- package/dist/platform/pr-conversation-cache.d.ts +12 -7
- package/dist/platform/pr-conversation-cache.d.ts.map +1 -1
- package/dist/platform/pr-conversation-cache.js +60 -40
- package/dist/platform/pr-conversation-cache.js.map +1 -1
- package/dist/platform/preflight-exec.d.ts.map +1 -1
- package/dist/platform/preflight-exec.js +0 -9
- package/dist/platform/preflight-exec.js.map +1 -1
- package/dist/platform/response-parser.d.ts.map +1 -1
- package/dist/platform/response-parser.js +0 -4
- package/dist/platform/response-parser.js.map +1 -1
- package/dist/platform/review-timeline.d.ts +17 -2
- package/dist/platform/review-timeline.d.ts.map +1 -1
- package/dist/platform/review-timeline.js +93 -106
- package/dist/platform/review-timeline.js.map +1 -1
- package/dist/platform/row-schema.d.ts.map +1 -1
- package/dist/platform/row-schema.js +0 -11
- package/dist/platform/row-schema.js.map +1 -1
- package/dist/platform/startup.d.ts.map +1 -1
- package/dist/platform/startup.js +1 -12
- package/dist/platform/startup.js.map +1 -1
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/platform/types.js +0 -5
- package/dist/platform/types.js.map +1 -1
- package/dist/platform/verdict-engine.d.ts.map +1 -1
- package/dist/platform/verdict-engine.js +0 -15
- package/dist/platform/verdict-engine.js.map +1 -1
- package/dist/shared/concurrency.d.ts.map +1 -1
- package/dist/shared/concurrency.js +0 -2
- package/dist/shared/concurrency.js.map +1 -1
- package/dist/shared/constants.d.ts +0 -2
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +0 -3
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/git-url.d.ts.map +1 -1
- package/dist/shared/git-url.js +0 -9
- package/dist/shared/git-url.js.map +1 -1
- package/dist/shared/types.d.ts +31 -12
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +14 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/skill/registry.d.ts.map +1 -1
- package/dist/skill/registry.js +0 -5
- package/dist/skill/registry.js.map +1 -1
- package/dist/skills/baxian-signals/SKILL.md +0 -6
- package/dist/state/agent-store.d.ts.map +1 -1
- package/dist/state/agent-store.js +0 -6
- package/dist/state/agent-store.js.map +1 -1
- package/dist/state/error-record-store.d.ts.map +1 -1
- package/dist/state/error-record-store.js +0 -5
- package/dist/state/error-record-store.js.map +1 -1
- package/dist/state/init.d.ts.map +1 -1
- package/dist/state/init.js +0 -1
- package/dist/state/init.js.map +1 -1
- package/dist/state/lock.d.ts.map +1 -1
- package/dist/state/lock.js +0 -1
- package/dist/state/lock.js.map +1 -1
- package/dist/state/snapshot.d.ts +0 -1
- package/dist/state/snapshot.d.ts.map +1 -1
- package/dist/state/snapshot.js +0 -13
- package/dist/state/snapshot.js.map +1 -1
- package/dist/state/task-store.d.ts.map +1 -1
- package/dist/state/task-store.js +96 -11
- package/dist/state/task-store.js.map +1 -1
- package/dist/terminal/attach.d.ts.map +1 -1
- package/dist/terminal/attach.js +0 -4
- package/dist/terminal/attach.js.map +1 -1
- package/dist/terminal/stream-ws.js +0 -5
- package/dist/terminal/stream-ws.js.map +1 -1
- package/dist/web/assets/index-CzVzThuT.js +15 -0
- package/dist/web/assets/{index-BS2adAfI.css → index-Rmp4wT_5.css} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/agent/root-agent-runtime.d.ts +0 -80
- package/dist/agent/root-agent-runtime.d.ts.map +0 -1
- package/dist/agent/root-agent-runtime.js +0 -637
- package/dist/agent/root-agent-runtime.js.map +0 -1
- package/dist/agent/root-recovery-coordinator.d.ts +0 -124
- package/dist/agent/root-recovery-coordinator.d.ts.map +0 -1
- package/dist/agent/root-recovery-coordinator.js +0 -1557
- package/dist/agent/root-recovery-coordinator.js.map +0 -1
- package/dist/state/root-recovery-store.d.ts +0 -107
- package/dist/state/root-recovery-store.d.ts.map +0 -1
- package/dist/state/root-recovery-store.js +0 -400
- package/dist/state/root-recovery-store.js.map +0 -1
- package/dist/web/assets/index-BKiM0MSM.js +0 -15
package/README.md
CHANGED
|
@@ -86,7 +86,7 @@ Open <http://localhost:3000>. The first run creates `~/.baxian/config.json` for
|
|
|
86
86
|
Then, in the console:
|
|
87
87
|
|
|
88
88
|
1. **New project** — point it at a git repository.
|
|
89
|
-
2. **Add agents** —
|
|
89
|
+
2. **Add agents** — an Agent Team (for example Claude Code as Dev, Codex as QA), each with a working directory containing a clone of the repo.
|
|
90
90
|
3. **New task** — describe what you want; the Dev agent picks it up and the review loop takes over.
|
|
91
91
|
|
|
92
92
|
### CLI
|
|
@@ -127,7 +127,7 @@ baxian reads `./baxian.json` from the working directory first, then falls back t
|
|
|
127
127
|
}
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
Each inner array in `agent` is one
|
|
130
|
+
Each inner array in `agent` is one Agent Team — a Dev agent and a QA agent that work the repo together. `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. Everything is also editable from the web console (projects, agents, hosts, language, notifications) — the UI tells you when a change needs a server restart.
|
|
131
131
|
|
|
132
132
|
Useful options:
|
|
133
133
|
|
package/README.zh-CN.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# baxian
|
|
6
6
|
|
|
7
|
-
**你的 AI
|
|
7
|
+
**你的 AI Agent Team——Dev agent 负责实现,QA agent 负责评审,每处改动过审后才交付。**
|
|
8
8
|
|
|
9
9
|
[English](https://github.com/baxian-ai/baxian/blob/main/README.md) · **简体中文**
|
|
10
10
|
|
|
@@ -86,7 +86,7 @@ baxian
|
|
|
86
86
|
然后在控制台里:
|
|
87
87
|
|
|
88
88
|
1. **新建项目** —— 指向一个 git 仓库。
|
|
89
|
-
2. **添加 agent** ——
|
|
89
|
+
2. **添加 agent** —— 一个 Agent Team(例如 Claude Code 当 Dev、Codex 当 QA),各自的工作目录里放一份仓库的 clone。
|
|
90
90
|
3. **新建任务** —— 描述你要做什么;Dev agent 接手后,评审循环自动接管。
|
|
91
91
|
|
|
92
92
|
### CLI
|
|
@@ -127,7 +127,7 @@ baxian 优先读取工作目录下的 `./baxian.json`,找不到时回退到 `~
|
|
|
127
127
|
}
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
`agent`
|
|
130
|
+
`agent` 里的每个内层数组是一个 Agent Team——协作同一仓库的一个 Dev agent 加一个 QA agent;`host` 只在使用远程 agent 时需要。更完整的示例(含远程 agent)见 [`baxian.json.example`](https://github.com/baxian-ai/baxian/blob/main/baxian.json.example)。这些配置也都能在 Web 控制台里修改(项目、agent、主机、语言、通知)——需要重启 server 的改动,界面会明确提示。
|
|
131
131
|
|
|
132
132
|
常用配置项:
|
|
133
133
|
|
package/dist/agent/bootstrap.js
CHANGED
|
@@ -10,8 +10,8 @@ export async function bootstrapAutoRepos(deps) {
|
|
|
10
10
|
export function autoBootstrapAgentIds(config) {
|
|
11
11
|
const ids = new Set();
|
|
12
12
|
for (const project of config.project) {
|
|
13
|
-
for (const
|
|
14
|
-
for (const agent of
|
|
13
|
+
for (const team of project.agent) {
|
|
14
|
+
for (const agent of team) {
|
|
15
15
|
if (agent.workdir)
|
|
16
16
|
continue;
|
|
17
17
|
ids.add(agent.id);
|
|
@@ -23,8 +23,8 @@ export function autoBootstrapAgentIds(config) {
|
|
|
23
23
|
export function collectTargets(config) {
|
|
24
24
|
const targets = [];
|
|
25
25
|
for (const project of config.project) {
|
|
26
|
-
for (const
|
|
27
|
-
for (const agent of
|
|
26
|
+
for (const team of project.agent) {
|
|
27
|
+
for (const agent of team) {
|
|
28
28
|
if (agent.workdir)
|
|
29
29
|
continue;
|
|
30
30
|
const resolvedHost = resolveAgentHost(config.host, agent.host);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/agent/branch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAI/E;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAE9B,MAAM,EAAE,MAAM;aACd,eAAe,EAAE,MAAM;aACvB,aAAa,EAAE,MAAM;gBAFrB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM;CAKxC;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEnC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/agent/branch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAI/E;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAE9B,MAAM,EAAE,MAAM;aACd,eAAe,EAAE,MAAM;aACvB,aAAa,EAAE,MAAM;gBAFrB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM;CAKxC;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEnC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,OAAO,EAC9B,IAAI,GAAE;QAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAO,GACzE,OAAO,CAAC,IAAI,CAAC;YA+CF,2BAA2B;IAgCnC,4BAA4B,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAoBV,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC/B,OAAO,CAAC,mBAAmB,CAAC;IA4HzB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOnD,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAc7C,wBAAwB;YAMxB,kBAAkB;YAYlB,uBAAuB;YAQvB,wBAAwB;YAcxB,YAAY;YAYZ,cAAc;YAcd,sBAAsB;YAYtB,KAAK;YAQL,MAAM;YAKN,cAAc;YAMd,aAAa;YAWb,SAAS;CAKxB"}
|
package/dist/agent/branch.js
CHANGED
|
@@ -32,7 +32,6 @@ export class BranchManager {
|
|
|
32
32
|
this.runner = runner;
|
|
33
33
|
}
|
|
34
34
|
async assertClean(workdir) {
|
|
35
|
-
// --no-optional-locks: a plain `git status` may refresh and write the index; keep it read-only.
|
|
36
35
|
const result = await this.runner.exec(`git -C ${shellQuote(workdir)} --no-optional-locks status --porcelain=v1 -z ` +
|
|
37
36
|
`--untracked-files=all --ignore-submodules=none`);
|
|
38
37
|
if (result.exitCode !== 0) {
|
|
@@ -58,8 +57,6 @@ export class BranchManager {
|
|
|
58
57
|
}
|
|
59
58
|
else if (local.exitCode === 1) {
|
|
60
59
|
if (opts.restorableRemoteTip) {
|
|
61
|
-
// 凭据存在说明本地 ref 是 release 时主动清理的、工作在远端;远端也消失时绝不能
|
|
62
|
-
// 从 origin/HEAD 重建同名空分支顶替,否则已推送的上一轮成果被静默丢弃
|
|
63
60
|
if (!await this.remoteBranchExists(workdir, branch)) {
|
|
64
61
|
throw new Error(`Remote ${branch} vanished after its local ref was cleaned up `
|
|
65
62
|
+ `(expected tip ${opts.restorableRemoteTip}); refusing to recreate the task branch from scratch`);
|
|
@@ -67,8 +64,6 @@ export class BranchManager {
|
|
|
67
64
|
await this.restoreTaskBranchFromRemote(workdir, taskId, branch, opts.restorableRemoteTip);
|
|
68
65
|
}
|
|
69
66
|
else if (opts.requireExistingWork) {
|
|
70
|
-
// continuation 场景本地分支必须在(或持有清理凭据):都没有说明上一轮工作已不可
|
|
71
|
-
// 证明,新建空分支会把丢失伪装成可继续
|
|
72
67
|
throw new Error(`Local branch ${branch} is missing with no cleanup credential; refusing to recreate it mid-task`);
|
|
73
68
|
}
|
|
74
69
|
else {
|
|
@@ -87,7 +82,6 @@ export class BranchManager {
|
|
|
87
82
|
}
|
|
88
83
|
await this.verifyRef(workdir, localRef);
|
|
89
84
|
}
|
|
90
|
-
// 只信删除时刻持久化的 remoteTipSha 凭据:远端 tip 必须仍包含它,防同名陌生分支或 force-push 重写被采纳
|
|
91
85
|
async restoreTaskBranchFromRemote(workdir, taskId, branch, cleanedRemoteTipSha) {
|
|
92
86
|
const remoteRef = `refs/remotes/origin/${branch}`;
|
|
93
87
|
const fetched = await execNetwork(this.runner, `${GIT_NET_ENV} git -C ${shellQuote(workdir)} fetch origin -- ` +
|
|
@@ -324,7 +318,6 @@ export class BranchManager {
|
|
|
324
318
|
throw new Error(`Local branch ${branch} already exists without baxian task binding proof for task ${taskId}`);
|
|
325
319
|
}
|
|
326
320
|
}
|
|
327
|
-
// canonicalSelfGuard rides every Workdir tree/ref mutation so a rebound ancestor can't redirect it to an external repo.
|
|
328
321
|
async fetch(workdir) {
|
|
329
322
|
const result = await execNetwork(this.runner, `${canonicalSelfGuard(workdir)} && ${GIT_NET_ENV} git -C ${shellQuote(workdir)} fetch origin --prune`);
|
|
330
323
|
if (result.exitCode !== 0)
|
package/dist/agent/branch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/agent/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAQrD,MAAM,UAAU,yBAAyB,CAAC,QAA4B;IACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,MAAM,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpD,OAAO,QAAQ,CAAC,UAAU,KAAK,MAAM,CAAC;AACxC,CAAC;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,WAAW,OAAO,yEAAyE,CAAC,CAAC;QACnG,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAE9B;IACA;IACA;IAHlB,YACkB,MAAc,EACd,eAAuB,EACvB,aAAqB;QAErC,KAAK,CAAC,oCAAoC,MAAM,cAAc,eAAe,SAAS,aAAa,EAAE,CAAC,CAAC;QAJvF,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAQ;QACvB,kBAAa,GAAb,aAAa,CAAQ;QAGrC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAOD,MAAM,OAAO,aAAa;IACJ;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,gGAAgG;QAChG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,gDAAgD;YAC3E,gDAAgD,CACnD,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,OAAe,EACf,MAAc,EACd,MAAc,EACd,qBAA8B,EAC9B,OAAwE,EAAE;QAE1E,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAClF,IAAI,qBAAqB,IAAI,MAAM,KAAK,GAAG,aAAa,GAAG,MAAM,EAAE,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,0BAA0B,aAAa,GAAG,MAAM,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,cAAc,MAAM,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAClC,UAAU,UAAU,CAAC,OAAO,CAAC,8BAA8B,UAAU,CAAC,QAAQ,CAAC,EAAE,CAClF,CAAC;QACF,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,gDAAgD;gBAChD,2CAA2C;gBAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,+CAA+C;0BAC7D,iBAAiB,IAAI,CAAC,mBAAmB,sDAAsD,CAClG,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC5F,CAAC;iBAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACpC,gDAAgD;gBAChD,qBAAqB;gBACrB,MAAM,IAAI,KAAK,CACb,gBAAgB,MAAM,0EAA0E,CACjG,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBACjE,MAAM,IAAI,CAAC,MAAM,CACf,OAAO,EACP,iBAAiB,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAC7D,CAAC;gBACF,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACvD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,eAAe,IAAI,mBAAmB,OAAO,EAAE,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,qEAAqE;IAC7D,KAAK,CAAC,2BAA2B,CACvC,OAAe,EACf,MAAc,EACd,MAAc,EACd,mBAA2B;QAE3B,MAAM,SAAS,GAAG,uBAAuB,MAAM,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,IAAI,CAAC,MAAM,EACX,GAAG,WAAW,WAAW,UAAU,CAAC,OAAO,CAAC,mBAAmB;YAC7D,GAAG,UAAU,CAAC,eAAe,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE,CACxD,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,0BAA0B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,UAAU,UAAU,CAAC,OAAO,CAAC,4BAA4B;YACvD,GAAG,UAAU,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAChE,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,gDAAgD,mBAAmB,uBAAuB,CAC3G,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,UAAU,CAAC,MAAM,CAAC,YAAY,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,OAAe,EACf,MAAc,EACd,eAAuB;QAEvB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,uCAAuC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,uBAAuB,MAAM,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B,IAAI,CAAC,MAAM,EACX,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,WAAW,WAAW,UAAU,CAAC,OAAO,CAAC,mBAAmB;YAC/F,GAAG,UAAU,CAAC,eAAe,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE,CACxD,CAAC;QACF,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChC,MAAM,IAAI,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,OAAe;QAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAe;QACzC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAAe,EACf,QAA4B,EAC5B,WAAgC;QAEhC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QACvE,CAAC;QACD,MAAM,SAAS,GAAG,cAAc,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,8BAA8B,UAAU,CAAC,SAAS,CAAC,EAAE,CACnF,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,wBAAwB;YACnD,GAAG,UAAU,CAAC,UAAU,QAAQ,CAAC,UAAU,iBAAiB,CAAC,EAAE,CAClE,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;QAC/F,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,yCAAyC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;aACxE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;QAC/F,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,uBAAuB,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjE,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,oEAAoE;iBAC7E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aAC1F,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,WAAW,CACzB,IAAI,CAAC,MAAM,EACX,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,WAAW,WAAW,UAAU,CAAC,OAAO,CAAC,mBAAmB;gBAC/F,GAAG,UAAU,CAAC,eAAe,QAAQ,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACnF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjE,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,qFAAqF;qBAC9F,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBAC7F,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,+BAA+B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/F,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,UAAU,UAAU,CAAC,OAAO,CAAC,kCAAkC;YAC7D,GAAG,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,aAAa,CAAC,EAAE,CACvD,CAAC;QACF,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACpE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,yBAAyB,SAAS,EAAE,EAAE,CAAC;QAC7E,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,UAAU,UAAU,CAAC,OAAO,CAAC,4BAA4B;YACvD,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CACrD,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;QACvF,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,iCAAiC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;aACnE,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QACrF,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,kBAAkB,CAAC,OAAO,CAAC,cAAc,UAAU,CAAC,OAAO,CAAC,iBAAiB,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAClH,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,0BAA0B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;aAC1D,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,UAAU,UAAU,CAAC,OAAO,CAAC,8BAA8B,UAAU,CAAC,SAAS,CAAC,EAAE,CACnF,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACpF,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,2CAA2C,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;SAC7E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC5F,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrG,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,0BAA0B,UAAU,CAAC,YAAY,CAAC,GAAG;YAChF,GAAG,UAAU,CAAC,cAAc,aAAa,EAAE,CAAC,EAAE,CACjD,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,MAAM,CAAC,MAAM;aACjB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,aAAa,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,OAAe,EAAE,MAAc;QACpE,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,kDAAkD,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,MAAc;QAC9D,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,CAAC,MAAM,EACX,GAAG,WAAW,WAAW,UAAU,CAAC,OAAO,CAAC,+BAA+B;YACzE,GAAG,UAAU,CAAC,cAAc,MAAM,EAAE,CAAC,EAAE,CAC1C,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAe,EAAE,MAAc;QACnE,MAAM,QAAQ,GAAG,uBAAuB,MAAM,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,WAAW,QAAQ,cAAc,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,OAAe,EAAE,MAAc;QACpE,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;YAAE,OAAO;QACrD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACvC,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM;YAClC,UAAU,UAAU,CAAC,OAAO,CAAC,mBAAmB,UAAU,CAAC,UAAU,MAAM,SAAS,CAAC,aAAa;YAClG,UAAU,UAAU,CAAC,OAAO,CAAC,mBAAmB,UAAU,CAAC,UAAU,MAAM,QAAQ,CAAC,GAAG;YACvF,GAAG,UAAU,CAAC,cAAc,MAAM,EAAE,CAAC,EAAE,CAC1C,CAAC;QACF,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,MAAc;QACxD,MAAM,QAAQ,GAAG,cAAc,MAAM,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,0BAA0B,UAAU,CAAC,aAAa,CAAC,GAAG;YACjF,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAC5B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,MAAc,EAAE,MAAc;QAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,MAAM,iBAAiB,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACvC,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM;YAClC,UAAU,UAAU,CAAC,OAAO,CAAC,mBAAmB,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM;YAClF,UAAU,UAAU,CAAC,OAAO,CAAC,mBAAmB,UAAU,CAAC,UAAU,MAAM,SAAS,CAAC,aAAa;YAClG,UAAU,UAAU,CAAC,OAAO,CAAC,mBAAmB,UAAU,CAAC,UAAU,MAAM,QAAQ,CAAC,GAAG;YACvF,GAAG,UAAU,CAAC,cAAc,MAAM,EAAE,CAAC,EAAE,CAC1C,CAAC;QACF,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,OAAe,EAAE,MAAc,EAAE,MAAc;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,wBAAwB;YACnD,GAAG,UAAU,CAAC,UAAU,MAAM,iBAAiB,CAAC,EAAE,CACrD,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,gBAAgB,MAAM,8DAA8D,MAAM,EAAE,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wHAAwH;IAChH,KAAK,CAAC,KAAK,CAAC,OAAe;QACjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,CAAC,MAAM,EACX,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,WAAW,WAAW,UAAU,CAAC,OAAO,CAAC,uBAAuB,CACtG,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,IAAY;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,cAAc,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACxH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzG,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,MAAc;QAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,SAAS,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,GAAW;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,UAAU,UAAU,CAAC,OAAO,CAAC,uBAAuB,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,CACpF,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,OAAO,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,QAAgB;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,SAAS,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IACxH,CAAC;CAEF"}
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/agent/branch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../../src/agent/detect/region.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CActD;
|
|
1
|
+
{"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../../src/agent/detect/region.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CActD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA6EzE"}
|
|
@@ -15,9 +15,6 @@ export function isHorizontalRule(line) {
|
|
|
15
15
|
}
|
|
16
16
|
return dashCount >= 3 || (allDashes && dashCount > 0);
|
|
17
17
|
}
|
|
18
|
-
// 自底部起覆盖 count 个非空行的窗口(保留行间空行、剥除尾部空行)。
|
|
19
|
-
// 供 tmux.ts 对 opencode/qodercli 取样:其 fresh 屏顶部锚定/垂直居中,
|
|
20
|
-
// idle/busy 标记会落在物理 tail(N) 之外(尾随空行海),非空行窗口与几何无关。
|
|
21
18
|
export function tailNonEmpty(screen, count) {
|
|
22
19
|
if (count <= 0)
|
|
23
20
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region.js","sourceRoot":"","sources":["../../../src/agent/detect/region.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"region.js","sourceRoot":"","sources":["../../../src/agent/detect/region.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,11 @@ export declare class DispatchReconciler {
|
|
|
24
24
|
start(): void;
|
|
25
25
|
stop(): void;
|
|
26
26
|
pollOnce(): Promise<void>;
|
|
27
|
+
resetTask(taskId: string): void;
|
|
27
28
|
private reconcile;
|
|
28
29
|
private pruneTrackers;
|
|
29
30
|
private reconcileReview;
|
|
31
|
+
private reconcileInitialDispatch;
|
|
30
32
|
private reconcileFix;
|
|
31
33
|
private alertIfBudgetExhausted;
|
|
32
34
|
private attemptsFor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-reconciler.d.ts","sourceRoot":"","sources":["../../src/agent/dispatch-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAA0B,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,sBAAsB,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"dispatch-reconciler.d.ts","sourceRoot":"","sources":["../../src/agent/dispatch-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAA0B,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,sBAAsB,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,WAAW,CAA2D;gBAElE,OAAO,EAAE,yBAAyB;IAU9C,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAS5C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAMjB,SAAS;YAuBT,aAAa;YA4Bb,eAAe;YAwEf,wBAAwB;YAmBxB,YAAY;YA4CZ,sBAAsB;IA4BpC,OAAO,CAAC,WAAW;YAUL,cAAc;IAsB5B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,iBAAiB;YAKX,aAAa;YAUb,gBAAgB;YAsEhB,aAAa;YAgCb,KAAK;YAiBL,gBAAgB;CAiB/B"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import { taskReviewRound } from '../shared/index.js';
|
|
1
|
+
import { REVIEW_VERDICT_TIMEOUT_MS, taskReviewRound } from '../shared/index.js';
|
|
2
2
|
import { PeriodicTaskRunner } from '../timing/periodic-task-runner.js';
|
|
3
3
|
import { isBenignDispatchConflict, } from './manager.js';
|
|
4
|
-
// 绑定丢失可能只是一次在途派发的 release→acquire 缝隙,驻留两周期再动手。
|
|
5
4
|
const UNBOUND_DWELL_CYCLES = 2;
|
|
6
|
-
// 派发级对账兜底(#558 M2 B3):消费 TmuxProbePoller 的观察结果 + manager 的 pending 登记,
|
|
7
|
-
// 把「QA 忙碌延后的 recheck / dev 忙碌延后的 fix / 可恢复 hold / 静默失联的 review pass」
|
|
8
|
-
// 经 M1 加固的标准入口补派。所有动作带次数上限与忙碌预算,超限一次性升级 intervention。
|
|
9
|
-
// 计轮意图读取持久化的 task.reviewRoundPending,进程重启后依然精确。
|
|
10
5
|
export class DispatchReconciler {
|
|
11
6
|
periodicRunner;
|
|
12
7
|
opts;
|
|
13
8
|
attempts = new Map();
|
|
14
|
-
// 驻留计数绑定 pass 世系:外部换代后新 pass 的 release→acquire 缝隙必须重新驻留,
|
|
15
|
-
// 不得继承旧 pass 的观察周期(同一 pass 内换绑仍是同一次在途派发,token 不变)
|
|
16
9
|
unboundSeen = new Map();
|
|
17
10
|
constructor(options) {
|
|
18
11
|
this.opts = options;
|
|
@@ -40,9 +33,14 @@ export class DispatchReconciler {
|
|
|
40
33
|
async pollOnce() {
|
|
41
34
|
await this.periodicRunner.runOnce();
|
|
42
35
|
}
|
|
36
|
+
resetTask(taskId) {
|
|
37
|
+
this.attempts.delete(taskId);
|
|
38
|
+
this.unboundSeen.delete(taskId);
|
|
39
|
+
this.opts.manager.resetPendingDispatchRetryBudget(taskId);
|
|
40
|
+
}
|
|
43
41
|
async reconcile() {
|
|
42
|
+
await this.opts.manager.flushTaskOutboxes();
|
|
44
43
|
const tasks = await this.opts.taskStore.list({});
|
|
45
|
-
// QA 归 retryPendingGitReviewDispatches,dev fix 归本 poller;两类登记都不能被当作孤儿清掉。
|
|
46
44
|
const protectedIds = new Set();
|
|
47
45
|
for (const task of tasks) {
|
|
48
46
|
if (task.status === 'review' || task.status === 'fixing')
|
|
@@ -57,13 +55,15 @@ export class DispatchReconciler {
|
|
|
57
55
|
else if (task.status === 'fixing') {
|
|
58
56
|
await this.reconcileFix(task);
|
|
59
57
|
}
|
|
58
|
+
else if (task.status === 'in_progress') {
|
|
59
|
+
await this.reconcileInitialDispatch(task);
|
|
60
|
+
}
|
|
60
61
|
}
|
|
61
62
|
catch (err) {
|
|
62
63
|
console.warn(`[dispatch-reconciler] task ${task.id} reconcile failed:`, err);
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
// 删除跟踪状态前用新鲜单读复核;list() 在 readdir/单文件故障下会缺行,快照缺席不能当不活跃。
|
|
67
67
|
async pruneTrackers(protectedIds) {
|
|
68
68
|
const tracked = new Set([
|
|
69
69
|
...this.attempts.keys(),
|
|
@@ -82,7 +82,6 @@ export class DispatchReconciler {
|
|
|
82
82
|
console.warn(`[dispatch-reconciler] prune skipped for ${taskId} (task read failed):`, err);
|
|
83
83
|
continue;
|
|
84
84
|
}
|
|
85
|
-
// get() 的 null 是确定的 ENOENT(任务已删除),按孤儿清理;读取异常才 fail closed 保留
|
|
86
85
|
if (fresh && (fresh.status === 'review' || fresh.status === 'fixing'))
|
|
87
86
|
continue;
|
|
88
87
|
this.attempts.delete(taskId);
|
|
@@ -99,21 +98,31 @@ export class DispatchReconciler {
|
|
|
99
98
|
if (!task.qaAgentId) {
|
|
100
99
|
throw new Error(`review task ${task.id} has no QA participant`);
|
|
101
100
|
}
|
|
101
|
+
if (task.outbox?.some(entry => entry.type === 'git.code-verdict'))
|
|
102
|
+
return;
|
|
102
103
|
const qaId = task.qaAgentId;
|
|
104
|
+
const reviewStartedAt = task.reviewDispatchedAt ? Date.parse(task.reviewDispatchedAt) : Number.NaN;
|
|
105
|
+
if (Number.isFinite(reviewStartedAt)
|
|
106
|
+
&& Date.now() - reviewStartedAt >= REVIEW_VERDICT_TIMEOUT_MS
|
|
107
|
+
&& task.attention === undefined) {
|
|
108
|
+
const recovery = task.phase === 'spec'
|
|
109
|
+
? `QA has not completed the spec review for task ${task.id} within the review deadline. Advance to re-dispatch QA, or cancel the task.`
|
|
110
|
+
: `QA has not submitted a verdict for task ${task.id} within the review deadline. Advance to re-dispatch QA, or submit a human verdict after inspecting the PR.`;
|
|
111
|
+
await this.emitIntervention(task, qaId, {
|
|
112
|
+
phase: 'review-verdict-overdue',
|
|
113
|
+
reviewDispatchedAt: task.reviewDispatchedAt,
|
|
114
|
+
note: recovery,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
103
117
|
if (!task.prNumber)
|
|
104
118
|
return;
|
|
105
119
|
const anchor = task.reviewHeadAnchorSha?.toLowerCase();
|
|
106
120
|
const head = task.latestHeadSha?.toLowerCase();
|
|
107
|
-
// 明确的 anchor≠head 才让位 push 事件路径;任一缺失时 push 路径可能永不触发(poller 的
|
|
108
|
-
// push 判定要求 latestHeadSha 在场),pending/hold 这类「确定欠一次派发」的分支须自行补齐
|
|
109
121
|
if (anchor !== undefined && head !== undefined && anchor !== head)
|
|
110
122
|
return;
|
|
111
123
|
const qaState = await this.opts.agentStore.get(qaId);
|
|
112
124
|
const entry = this.opts.manager.getPendingDispatchRetry(task.id);
|
|
113
125
|
const observation = this.opts.statusStore.get(qaId);
|
|
114
|
-
// git 模式的 hold 恢复归 sweep(durable pending 在场,60s 重试);绑定丢失与送达后
|
|
115
|
-
// 静默失联没有 durable 凭据(成功路径已清 pending),必须由对账兜底,否则永久停在 review。
|
|
116
|
-
// anchor 缺失时补派内的平台 driver 会重新锚定并 fail loud。
|
|
117
126
|
if (qaState?.taskId !== task.id) {
|
|
118
127
|
const prev = this.unboundSeen.get(task.id);
|
|
119
128
|
const seen = prev !== undefined && prev.passToken === task.signalToken ? prev.seen + 1 : 1;
|
|
@@ -135,10 +144,6 @@ export class DispatchReconciler {
|
|
|
135
144
|
});
|
|
136
145
|
return;
|
|
137
146
|
}
|
|
138
|
-
// 一条规则:pending 每周期要么被消费,要么计入等待预算——任何不可消费的原因
|
|
139
|
-
// (不可注入/探测失败/正等人回答/观测未更新)都不得让 dispatchBusyWaitBudgetMs 失去消费点。
|
|
140
|
-
// needInput.at 在场说明该回合正等人回答(不落 awaiting_human 且静止后探测可注入),
|
|
141
|
-
// 重投 review prompt 会覆盖问题——与无登记兜底同一门禁
|
|
142
147
|
const awaitingAnswer = qaState.needInput?.at !== undefined;
|
|
143
148
|
if (awaitingAnswer || !canInjectObservation(observation) || !this.observationDrivesRetry(task, observation, entry.since)) {
|
|
144
149
|
await this.alertIfBudgetExhausted(task, entry, observation, qaId, awaitingAnswer);
|
|
@@ -150,8 +155,6 @@ export class DispatchReconciler {
|
|
|
150
155
|
});
|
|
151
156
|
return;
|
|
152
157
|
}
|
|
153
|
-
// 无登记兜底(含进程重启丢内存登记):PENDING_IDLE 必须晚于本 pass 的派发时刻,
|
|
154
|
-
// 否则 QA 换绑后残留的上一任务空闲观测会把刚启动的 review 当成卡住
|
|
155
158
|
if (observation.tmuxSessionStatus === 'present'
|
|
156
159
|
&& observation.reason === 'PENDING_IDLE'
|
|
157
160
|
&& canInjectObservation(observation)
|
|
@@ -160,6 +163,26 @@ export class DispatchReconciler {
|
|
|
160
163
|
await this.redispatchReview(task, qaId, 'stalled-idle');
|
|
161
164
|
}
|
|
162
165
|
}
|
|
166
|
+
async reconcileInitialDispatch(task) {
|
|
167
|
+
const devId = task.agentId;
|
|
168
|
+
if (!devId || task.attention !== undefined)
|
|
169
|
+
return;
|
|
170
|
+
const [devState, observation] = await Promise.all([
|
|
171
|
+
this.opts.agentStore.get(devId),
|
|
172
|
+
Promise.resolve(this.opts.statusStore.get(devId)),
|
|
173
|
+
]);
|
|
174
|
+
if (devState?.taskId !== task.id
|
|
175
|
+
|| devState.status === 'awaiting_human'
|
|
176
|
+
|| devState.needInput?.at !== undefined
|
|
177
|
+
|| observation.reason !== 'PENDING_IDLE'
|
|
178
|
+
|| !canInjectObservation(observation)
|
|
179
|
+
|| !observedAfter(observation, task.updatedAt))
|
|
180
|
+
return;
|
|
181
|
+
await this.emitIntervention(task, devId, {
|
|
182
|
+
phase: 'initial-dispatch-stalled',
|
|
183
|
+
note: `The dev agent is idle while task ${task.id} is still in progress. Advance with Dev to replay the persisted instruction, or choose QA to confirm an already completed delivery.`,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
163
186
|
async reconcileFix(task) {
|
|
164
187
|
const devId = task.agentId;
|
|
165
188
|
if (!devId)
|
|
@@ -174,19 +197,14 @@ export class DispatchReconciler {
|
|
|
174
197
|
});
|
|
175
198
|
return;
|
|
176
199
|
}
|
|
177
|
-
// 登记后 dev 可能进入 hold/换绑:pending 只证明欠一次投递,投递前仍要确认 pane 可安全承接
|
|
178
200
|
const devState = await this.opts.agentStore.get(devId);
|
|
179
201
|
if (devState?.taskId !== task.id) {
|
|
180
|
-
// 绑定丢失/改派后 continueSession 无从投递,而 fixing 任务受 prune 保护:
|
|
181
|
-
// 不能静默留着一笔无人可送的 fix,按有界升级交人工(重新绑定属操作员决定,不自动改派)
|
|
182
202
|
if (await this.consumeAttempt(task, devId, 'dev-fix-unbound'))
|
|
183
203
|
this.recordAttempt(task, task.signalToken);
|
|
184
204
|
return;
|
|
185
205
|
}
|
|
186
|
-
// hold 本身在 UI 可见,无需再升级
|
|
187
206
|
if (devState.status === 'awaiting_human')
|
|
188
207
|
return;
|
|
189
|
-
// 与 review 侧同一条规则:不可消费即计入预算(不注入但有界升级)
|
|
190
208
|
const awaitingAnswer = devState.needInput?.at !== undefined;
|
|
191
209
|
if (awaitingAnswer || !canInjectObservation(observation) || !this.observationDrivesRetry(task, observation, entry.since)) {
|
|
192
210
|
await this.alertIfBudgetExhausted(task, entry, observation, devId, awaitingAnswer);
|
|
@@ -195,8 +213,6 @@ export class DispatchReconciler {
|
|
|
195
213
|
await this.recontinueFix(task, devId, 'dev-fix-pending', entry.signalToken);
|
|
196
214
|
return;
|
|
197
215
|
}
|
|
198
|
-
// 'waiting' 是派生视图态不落盘;兜底以「绑定 + 非 hold + 未在等用户输入 + 观察到持续静止」判定,
|
|
199
|
-
// needInput.at 在场说明 dev 正等人回答,重投 fix prompt 会覆盖问题
|
|
200
216
|
const devState = await this.opts.agentStore.get(devId);
|
|
201
217
|
if (devState?.taskId === task.id
|
|
202
218
|
&& devState.status !== 'awaiting_human'
|
|
@@ -209,8 +225,6 @@ export class DispatchReconciler {
|
|
|
209
225
|
await this.recontinueFix(task, devId, 'dev-fix-stalled-idle', task.signalToken);
|
|
210
226
|
}
|
|
211
227
|
}
|
|
212
|
-
// 阻塞态(working/STUCK_BUSY/PENDING_HUMAN/error 探测失败/非 runtime 前台)不可注入;
|
|
213
|
-
// 阻塞超预算发一次性 intervention,事件成功落盘才按登记代 CAS 锁存告警标志。
|
|
214
228
|
async alertIfBudgetExhausted(task, entry, observation, agentId, awaitingAnswer = false) {
|
|
215
229
|
if (entry.budgetAlerted || Date.now() - entry.since <= this.opts.busyWaitBudgetMs)
|
|
216
230
|
return;
|
|
@@ -233,8 +247,6 @@ export class DispatchReconciler {
|
|
|
233
247
|
});
|
|
234
248
|
}
|
|
235
249
|
}
|
|
236
|
-
// 尝试计数绑定当前 pass 世系:reconciler 自己的补派把新 token 记入 passToken 延续计数;
|
|
237
|
-
// 任何外部换代(push / 新一轮 fix / 手工重派 / legacy 无 token → 真实 token)都重置预算。
|
|
238
250
|
attemptsFor(task) {
|
|
239
251
|
const rec = this.attempts.get(task.id);
|
|
240
252
|
if (!rec)
|
|
@@ -250,10 +262,10 @@ export class DispatchReconciler {
|
|
|
250
262
|
if (rec.count >= this.opts.maxAttempts) {
|
|
251
263
|
if (!rec.alerted) {
|
|
252
264
|
const recovery = action === 'dev-fix-unbound'
|
|
253
|
-
? `the dev agent is no longer bound to this task, so the queued fix has no deliverable target;
|
|
265
|
+
? `the dev agent is no longer bound to this task, so the queued fix has no deliverable target; restore the Dev binding, then use Advance with Dev (or cancel the task). Do not advance to QA because that would skip the requested changes.`
|
|
254
266
|
: action.startsWith('dev-fix')
|
|
255
|
-
? '
|
|
256
|
-
: 'inspect the QA agent
|
|
267
|
+
? 'use Advance with Dev to replay the persisted fix prompt, or cancel the task. Do not advance to QA because that would skip the requested changes.'
|
|
268
|
+
: 'inspect the QA agent, then use Advance with QA to re-dispatch the review.';
|
|
257
269
|
const emitted = await this.emitIntervention(task, agentId, {
|
|
258
270
|
phase: 'dispatch-reconcile-attempts-exhausted',
|
|
259
271
|
action,
|
|
@@ -276,16 +288,12 @@ export class DispatchReconciler {
|
|
|
276
288
|
...(passToken !== undefined ? { passToken } : {}),
|
|
277
289
|
});
|
|
278
290
|
}
|
|
279
|
-
// 同一份空闲观测只驱动一次补派:补派自身的 stable-idle/pre-inject 判定比探测精细,
|
|
280
|
-
// 判忙重排后必须等到更新的观测再动手,否则每周期空转 release/acquire/token 轮换
|
|
281
291
|
observationDrivesRetry(task, observation, sinceMs) {
|
|
282
292
|
if (!freshObservation(observation, sinceMs))
|
|
283
293
|
return false;
|
|
284
294
|
const lastDispatchAtMs = this.attemptsFor(task).lastDispatchAtMs;
|
|
285
295
|
return lastDispatchAtMs === undefined || freshObservation(observation, lastDispatchAtMs);
|
|
286
296
|
}
|
|
287
|
-
// 水位线必须与本次 pass 同代落库:attemptsFor 见 passToken 不符即整条重置,
|
|
288
|
-
// 不带世系的记录会在下一次读取时连同水位线一起被当成外部换代抹掉
|
|
289
297
|
markDispatchAttempted(task) {
|
|
290
298
|
const rec = this.attemptsFor(task);
|
|
291
299
|
this.attempts.set(task.id, {
|
|
@@ -313,8 +321,6 @@ export class DispatchReconciler {
|
|
|
313
321
|
return;
|
|
314
322
|
this.markDispatchAttempted(task);
|
|
315
323
|
const tokenAtDecision = task.signalToken;
|
|
316
|
-
// 相位:登记时记录的原始相位优先;无登记时首轮(round=0)意味着初次 review 从未完成,按 review 重放。
|
|
317
|
-
// 计轮:读持久化的 reviewRoundPending(该轮尚未入账),补派恰好补计一次,重启后依然成立
|
|
318
324
|
const qaPhase = entryAtDecision?.qaPhase ?? (taskReviewRound(task) === 0 ? 'review' : undefined);
|
|
319
325
|
let result;
|
|
320
326
|
let armedToken;
|
|
@@ -342,23 +348,18 @@ export class DispatchReconciler {
|
|
|
342
348
|
console.warn(`[dispatch-reconciler] redispatch ${task.id} (${action}) superseded by a concurrent pass: ${err.message}`);
|
|
343
349
|
return;
|
|
344
350
|
}
|
|
345
|
-
// 失败前 dispatch 可能已自轮换 armed pass(如 handled hold 保持新 pass):世系必须记到
|
|
346
|
-
// 失败后的实际 token,否则下周期 attemptsFor 会当外部换代重置预算,持久 hold 永不达上限
|
|
347
351
|
this.recordAttempt(task, await this.livePassToken(task.id, tokenAtDecision));
|
|
348
352
|
console.warn(`[dispatch-reconciler] redispatch ${task.id} (${action}) failed:`, err);
|
|
349
353
|
return;
|
|
350
354
|
}
|
|
351
355
|
const after = this.opts.manager.getPendingDispatchRetry(task.id);
|
|
352
356
|
if (after?.kind === 'qa-recheck' && after.signalToken === tokenAtDecision) {
|
|
353
|
-
// 只剩本次决策时的旧登记(未被 startSession 消费/换代),按已消费清理
|
|
354
357
|
this.opts.manager.clearPendingDispatchRetryIfMatches(task.id, {
|
|
355
358
|
agentId: after.agentId,
|
|
356
359
|
signalToken: after.signalToken,
|
|
357
360
|
});
|
|
358
361
|
}
|
|
359
362
|
else if (after?.kind === 'qa-recheck') {
|
|
360
|
-
// 补派再次遇忙的内部重排:预算已随 armedToken fence 在登记时注入(since 保持原值),
|
|
361
|
-
// 借这一点区分外部 successor——它的登记必然是新鲜 since,绝不等于原登记的旧时刻
|
|
362
363
|
const internalRequeue = pendingBudget !== undefined
|
|
363
364
|
&& after.agentId === (entryAtDecision?.agentId ?? after.agentId)
|
|
364
365
|
&& after.since === pendingBudget.since;
|
|
@@ -371,9 +372,6 @@ export class DispatchReconciler {
|
|
|
371
372
|
}
|
|
372
373
|
return;
|
|
373
374
|
}
|
|
374
|
-
// 返回值未必仍属本次 armed pass:await 窗口内 verdict/push 可接管(REQUEST_CHANGES 还会
|
|
375
|
-
// 切 fixing 并登记 dev-fix pending)。世系只延续到可证明是本次铸造的 pass 上,
|
|
376
|
-
// 否则连同预算一并作废——否则 review 补派的次数会挡住 successor(甚至另一 kind)的补投
|
|
377
375
|
if (result.signalToken !== undefined && result.signalToken === armedToken) {
|
|
378
376
|
this.recordAttempt(task, result.signalToken);
|
|
379
377
|
}
|
|
@@ -390,8 +388,6 @@ export class DispatchReconciler {
|
|
|
390
388
|
this.markDispatchAttempted(task);
|
|
391
389
|
let resumed = false;
|
|
392
390
|
try {
|
|
393
|
-
// fence 延伸到最终 paste:continueSession 的多个 await 之后 pass 仍可能换代,
|
|
394
|
-
// guardBeforeInject 在 composer/paste/Enter 各点复核,漂移即放弃投递
|
|
395
391
|
resumed = await this.opts.manager.continueSession(task.id, devId, 'fix', {
|
|
396
392
|
signalToken: expectedToken,
|
|
397
393
|
guardBeforeInject: async () => {
|
|
@@ -406,7 +402,6 @@ export class DispatchReconciler {
|
|
|
406
402
|
return;
|
|
407
403
|
}
|
|
408
404
|
if (!resumed) {
|
|
409
|
-
// 门禁拒绝(绑定/状态/Workdir/fence)同样消耗额度:持久性拒绝必须走有界升级而非每周期无限重试
|
|
410
405
|
this.recordAttempt(task, expectedToken);
|
|
411
406
|
console.warn(`[dispatch-reconciler] fix re-continue ${task.id} (${action}) skipped by dispatch gates`);
|
|
412
407
|
return;
|
|
@@ -451,8 +446,6 @@ export class DispatchReconciler {
|
|
|
451
446
|
}
|
|
452
447
|
}
|
|
453
448
|
}
|
|
454
|
-
// 只有明确的 live-runtime 空闲观测(含设计认可的 PENDING_IDLE)可以解除欠投递;
|
|
455
|
-
// 探测失败(error/PANE_PROBE_FAILED)、非 runtime 前台、菜单/冻结忙碌一律 fail closed。
|
|
456
449
|
function canInjectObservation(observation) {
|
|
457
450
|
if (observation.tmuxSessionStatus !== 'present')
|
|
458
451
|
return false;
|