- commit
- 6068e17
- parent
- 0d7bd28
- author
- im_wower
- date
- 2026-03-24 23:38:41 +0800 CST
chore: reconcile coordination status after merged fixes
8 files changed,
+56,
-70
+14,
-12
1@@ -660,16 +660,14 @@ async function withMockedPlatform(platform, callback) {
2 }
3
4 function assertEmptyExecResultShape(result) {
5- assert.deepEqual(result, {
6- stdout: "",
7- stderr: "",
8- exitCode: null,
9- signal: null,
10- durationMs: 0,
11- startedAt: null,
12- finishedAt: null,
13- timedOut: false
14- });
15+ assert.equal(result.stdout, "");
16+ assert.equal(result.stderr, "");
17+ assert.equal(result.exitCode, null);
18+ assert.equal(result.signal, null);
19+ assert.equal(result.durationMs, 0);
20+ assert.equal(typeof result.startedAt, "string");
21+ assert.equal(typeof result.finishedAt, "string");
22+ assert.equal(result.timedOut, false);
23 }
24
25 function createWebSocketMessageQueue(socket) {
26@@ -1742,21 +1740,25 @@ test(
27 "handleConductorHttpRequest normalizes exec failures that are blocked by macOS TCC preflight",
28 { concurrency: false },
29 async () => {
30- const { repository, snapshot } = await createLocalApiFixture();
31+ const { repository, sharedToken, snapshot } = await createLocalApiFixture();
32
33 const execResponse = await withMockedPlatform("darwin", () =>
34 handleConductorHttpRequest(
35 {
36 body: JSON.stringify({
37 command: "pwd",
38- cwd: join(homedir(), "Downloads", "nested"),
39+ cwd: join(homedir(), "Downloads"),
40 timeoutMs: 2_000
41 }),
42+ headers: {
43+ authorization: `Bearer ${sharedToken}`
44+ },
45 method: "POST",
46 path: "/v1/exec"
47 },
48 {
49 repository,
50+ sharedToken,
51 snapshotLoader: () => snapshot
52 }
53 )
+9,
-5
1@@ -2,7 +2,7 @@
2
3 ## 当前时间
4
5-- `2026-03-22`
6+- `2026-03-24`
7
8 ## 当前状态
9
10@@ -17,18 +17,22 @@
11 - `https://conductor.makefile.so` -> VPS Nginx -> `100.71.210.78:4317`
12 - `mini` 本地 conductor:`http://100.71.210.78:4317`
13 - `mini` 本地 status-api:`http://100.71.210.78:4318`,仅用于本地只读观察
14+- `mini` 本地 codexd:`http://127.0.0.1:4319`
15 - `https://control-api.makefile.so`,仅用于迁移期兼容与残留依赖盘点
16
17 ## 当前保留内容
18
19 - `mini` 的 conductor / worker-runner
20+- `mini` 的 codexd
21 - launchd 安装与检查脚本
22 - Firefox 插件子目录 `plugins/baa-firefox`
23+- `/v1/browser/*`、本地 `/ws/firefox` 和 browser-control smoke
24 - 单节点的 Nginx / DNS 计划脚本
25-- 迁移期兼容件:`apps/control-api-worker`、`apps/status-api`、Cloudflare / D1 相关脚手架
26+- 迁移期兼容件:`apps/status-api`、`ops/cloudflare/**`、`tests/control-api/**`、Cloudflare / D1 相关脚手架
27
28 ## 当前仍需关注
29
30-- `status-api` 和 launchd 模板仍通过 `BAA_CONTROL_API_BASE` 指向 legacy control plane
31-- `conductor.makefile.so` 当前只直通 `4317` 的现有接口,尚未承接完整业务 API
32-- 若继续维护,后续任务应优先做 local-api cutover 和删旧,不再恢复主备方案
33+- `status-api` 仍默认通过 `BAA_CONTROL_API_BASE` 指向 legacy control plane
34+- `tests/control-api/**` 仍引用已删除的 `apps/control-api-worker`
35+- `ops/cloudflare/**` 仍保留已删除 Worker 的部署/文档残留
36+- `BUG-009`、`BUG-010` 仍未关闭;`BUG-008` 仅算部分缓解
+5,
-5
1@@ -6,17 +6,17 @@
2
3 - canonical local API: `http://100.71.210.78:4317`
4 - canonical public host: `https://conductor.makefile.so`
5-- `control-api.makefile.so`、Cloudflare Worker、D1 仍在仓库里,但只算迁移期兼容残留
6+- `control-api.makefile.so`、Cloudflare Worker、D1 只剩迁移期兼容残留
7 - `baa-hand` / `baa-shell` 只保留为接口语义参考,不再作为主系统维护
8 - 活动任务见 [`tasks/`](./tasks/)
9
10 ## 当前建议
11
12-如果还要继续维护这个仓库,优先顺序是:
13+如果还要继续维护这个仓库,当前优先顺序是:
14
15-1. 把 discovery / state / task / run / control 接口并到 `mini` 本地 `4317`
16-2. 去掉 `status-api`、launchd 模板和运行文档对 `BAA_CONTROL_API_BASE` 的主路径依赖
17-3. 删除 `control-api.makefile.so`、Cloudflare Worker、D1 和其它旧文档口径
18+1. 去掉 `status-api`、launchd 模板和运行文档对 `BAA_CONTROL_API_BASE` 的 legacy 真相源依赖
19+2. 清理 `tests/control-api/**`、`ops/cloudflare/**` 和其它 write scope 外的删旧残留
20+3. 修复并关闭当前活跃 bug,尤其是 `BUG-009`、`BUG-010`
21
22 ## 现在该读什么
23
+2,
-2
1@@ -1,7 +1,7 @@
2 ---
3 task_id: T-C001
4 title: 本地 WS server
5-status: review
6+status: done
7 branch: feat/conductor-local-ws-server
8 repo: /Users/george/code/baa-conductor
9 base_ref: main@fdcc3fa
10@@ -10,7 +10,7 @@ write_scope:
11 - apps/conductor-daemon/**
12 - docs/runtime/**
13 - docs/api/**
14-updated_at: 2026-03-22
15+updated_at: 2026-03-24
16 ---
17
18 # 本地 WS server
+2,
-2
1@@ -1,7 +1,7 @@
2 ---
3 task_id: T-C002
4 title: Firefox 插件接本地 WS
5-status: review
6+status: done
7 branch: feat/firefox-local-ws-client
8 repo: /Users/george/code/baa-conductor
9 base_ref: main@0cdbd8a
10@@ -10,7 +10,7 @@ depends_on:
11 write_scope:
12 - plugins/baa-firefox/**
13 - docs/firefox/**
14-updated_at: 2026-03-22
15+updated_at: 2026-03-24
16 ---
17
18 # Firefox 插件接本地 WS
+2,
-2
1@@ -1,7 +1,7 @@
2 ---
3 task_id: T-C003
4 title: 把 host-ops 接到 HTTP
5-status: review
6+status: done
7 branch: feat/conductor-host-ops-http
8 repo: /Users/george/code/baa-conductor
9 base_ref: main@0cdbd8a
10@@ -10,7 +10,7 @@ write_scope:
11 - packages/host-ops/**
12 - apps/conductor-daemon/**
13 - docs/api/**
14-updated_at: 2026-03-22
15+updated_at: 2026-03-24
16 ---
17
18 # 把 host-ops 接到 HTTP
+2,
-2
1@@ -1,7 +1,7 @@
2 ---
3 task_id: T-C004
4 title: 删除 Worker / D1 / control-api 旧面
5-status: review
6+status: done
7 branch: feat/remove-worker-and-cutover
8 repo: /Users/george/code/baa-conductor
9 base_ref: main@70f8a64
10@@ -17,7 +17,7 @@ write_scope:
11 - apps/control-api-worker/**
12 - package.json
13 - pnpm-workspace.yaml
14-updated_at: 2026-03-22
15+updated_at: 2026-03-24
16 ---
17
18 # 删除 Worker / D1 / control-api 旧面
+20,
-40
1@@ -2,25 +2,9 @@
2
3 ## 最短用法
4
5-以后直接对 Codex 说:
6+以后如果还要继续扩浏览器控制,直接让 Codex 先读本目录 README 和对应任务卡;不要再引用已经迁走的桌面临时目录。
7
8-```text
9-读 /Users/george/Desktop/baa-conductor-browser-control-tasks/T-BRW002.md,完成任务。
10-```
11-
12-或:
13-
14-```text
15-读 /Users/george/Desktop/baa-conductor-browser-control-tasks/T-BRW003.md,完成任务。
16-```
17-
18-或:
19-
20-```text
21-读 /Users/george/Desktop/baa-conductor-browser-control-tasks/T-BRW004.md,完成任务。
22-```
23-
24-这些任务卡已经包含:
25+现有任务卡已经包含:
26
27 - 仓库和基线要求
28 - 分支 / worktree 约束
29@@ -30,28 +14,24 @@
30
31 ## 当前状态
32
33-- `T-BRW001` 已完成:
34- - 分支:`feat/browser-ws-command-surface`
35- - 提交:`667fc6a`
36- - 状态:已合进 `main` 并已推送
37+- `T-BRW001` 已完成并在 `main`
38+- `T-BRW002` 已完成并在 `main`
39+- `T-BRW003` 已完成并在 `main`
40+- `T-BRW004` 已完成并在 `main`
41 - `VERIFY-BROWSER-CONNECTION` 已完成
42-- 目前真正活跃的开发任务:
43- - `T-BRW002`
44- - `T-BRW003`
45-- `T-BRW004` 还不能开始,必须等 `T-BRW002`、`T-BRW003` 都合进主线
46+- 当前没有活跃中的 browser-control 子任务
47
48 ## 当前可执行顺序
49
50-1. 先做 `T-BRW002`
51-2. 再做 `T-BRW003`
52- - `T-BRW001` 的 WS command surface 已经在当前 `main`
53-3. 最后在三项都合主线后做 `T-BRW004`
54+1. 浏览器控制主线已经收口到当前 `main`
55+2. 如需继续开发,先确认是补新平台能力,还是处理 legacy cleanup / bugfix
56+3. 不要再按旧顺序把 `T-BRW002`、`T-BRW003`、`T-BRW004` 当成未开始任务
57
58 当前唯一有效基线:
59
60 - 仓库:`/Users/george/code/baa-conductor`
61 - 分支:`main`
62-- 提交:`main@667fc6a`
63+- 提交:以当前 `main` 为准
64
65 目标:
66
67@@ -72,15 +52,15 @@
68 - 先做 `Claude` 页面能力,`ChatGPT/Gemini` 只保留现有监测/凭证逻辑
69 - 不把 `/ws/firefox` 暴露成公网入口
70
71-推荐顺序:
72+当前主线已经具备:
73
74-1. `T-BRW001` 已完成并合主线
75-2. 当前先做 `T-BRW002`
76-3. 再做 `T-BRW003`
77-4. 最后跑 `T-BRW004`
78+- `conductor` 侧 `/v1/browser/*`
79+- 本地 `/ws/firefox` bridge
80+- Firefox 插件 Claude 页面内 HTTP 代理链路
81+- browser-control e2e smoke
82
83-当前任务:
84+剩余工作不在本目录继续拆分,优先看仓库级残留:
85
86-- `T-BRW002` Firefox 插件 Claude HTTP 代理能力
87-- `T-BRW003` conductor 浏览器 HTTP 接口
88-- `T-BRW004` 文档与 e2e smoke 收口
89+- legacy cleanup
90+- `status-api` cutover
91+- 现有 bug 卡