baa-conductor

git clone 

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
M apps/conductor-daemon/src/index.test.js
+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       )
M coordination/STATUS_SUMMARY.md
+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` 仅算部分缓解
M coordination/TASK_OVERVIEW.md
+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 
M coordination/tasks/T-C001.md
+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
M coordination/tasks/T-C002.md
+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
M coordination/tasks/T-C003.md
+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
M coordination/tasks/T-C004.md
+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 旧面
M coordination/tasks/browser-control/README.md
+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 卡