baa-conductor

git clone 

baa-conductor / tasks
codex@macbookpro  ·  2026-03-31

T-S049.md

  1# Task T-S049:开放 @browser.chatgpt 和 @browser.gemini target
  2
  3## 状态
  4
  5- 当前状态:`已完成`
  6- 规模预估:`S`
  7- 依赖任务:`T-S048`(Gemini 适配器)
  8- 建议执行者:`Codex` 或 `Claude`(加白名单 + 路由,边界清晰)
  9
 10## 直接给对话的提示词
 11
 12`/Users/george/code/baa-conductor/tasks/T-S049.md` 任务文档,完成开发任务。
 13
 14## 当前基线
 15
 16- 仓库:`/Users/george/code/baa-conductor`
 17- 分支基线:`main`(当前已包含 `T-BUG-029` 18- 提交:`4663817`
 19
 20## 分支与 worktree(强制)
 21
 22- 分支名:`feat/browser-chatgpt-gemini-targets`
 23- worktree 路径:`/Users/george/code/baa-conductor-browser-chatgpt-gemini-targets`
 24
 25开工步骤:
 26
 271. `cd /Users/george/code/baa-conductor`
 282. `git worktree add ../baa-conductor-browser-chatgpt-gemini-targets -b feat/browser-chatgpt-gemini-targets main`
 293. `cd ../baa-conductor-browser-chatgpt-gemini-targets`
 30
 31完成后提交与推送(由执行者完成,不要合并):
 32
 331. 在 worktree 里提交所有变更(包括更新后的任务文档)
 342. `git push -u origin feat/browser-chatgpt-gemini-targets`
 35
 36## 目标
 37
 38在 BAA 指令系统中正式开放 `@browser.chatgpt``@browser.gemini` 作为合法 target。
 39
 40## 必须完成
 41
 42### 1. policy.ts 加白名单
 43
 44```typescript
 45SUPPORTED_TARGET_TOOLS["browser.chatgpt"] = ["current", "send"];
 46SUPPORTED_TARGET_TOOLS["browser.gemini"] = ["current", "send"];
 47```
 48
 49### 2. router.ts 加路由映射
 50
 51参照 `browser.claude` 的路由,为 `browser.chatgpt``browser.gemini` 加对应映射:
 52
 53- `send``POST /v1/browser/chatgpt/send` / `POST /v1/browser/gemini/send`
 54- `current``GET /v1/browser/chatgpt/current` / `GET /v1/browser/gemini/current`
 55
 56### 3. local-api.ts 加端点
 57
 58参照 `/v1/browser/claude/send``/v1/browser/claude/current` 的实现,为 chatgpt 和 gemini 加对应端点。
 59
 60## 允许修改的目录
 61
 62- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/policy.ts`
 63- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/router.ts`
 64- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/local-api.ts`
 65
 66## 验收标准
 67
 68- `@browser.chatgpt::send:::"hello"` 不被 policy deny
 69- `@browser.gemini::send:::"hello"` 不被 policy deny
 70- 路由正确映射到对应端点
 71- Claude 的 `@browser.claude` 行为不受影响
 72- 所有现有测试通过
 73
 74## 执行记录
 75
 76> 以下内容由执行任务的 AI 填写,创建任务时留空。
 77
 78### 开始执行
 79
 80- 执行者:Codex
 81- 开始时间:2026-03-30 02:49 CST
 82- 状态变更:`待开始` → `进行中`
 83
 84### 完成摘要
 85
 86- 完成时间:2026-03-30 03:19 CST
 87- 状态变更:`进行中` → `已完成`
 88- 修改了哪些文件:`apps/conductor-daemon/src/instructions/policy.ts`、`apps/conductor-daemon/src/instructions/router.ts`、`apps/conductor-daemon/src/local-api.ts`、`apps/conductor-daemon/src/index.test.js`、`tasks/T-S049.md`
 89- 核心实现思路:把 `browser.chatgpt`、`browser.gemini` 加入 BAA Phase 1 target 白名单;router 复用 `browser.claude``send/current` 映射模式,落到 `/v1/browser/chatgpt/*`、`/v1/browser/gemini/*`;local-api 为 ChatGPT/Gemini 增加 legacy helper wrapper,其中 `send` 复用现有 browser proxy,请求默认分别落到 ChatGPT conversation 路径和 Gemini StreamGenerate 路径,`current` 为 ChatGPT 增加当前对话代理读取,为 Gemini 返回当前页面/runtime 与最近 final-message 快照;同时补齐 describe/capabilities 中的 legacy route 暴露,并把原先“应被 policy deny”的测试改成新语义下的正向覆盖。
 90- 跑了哪些测试:`pnpm -C apps/conductor-daemon test`
 91
 92### 执行过程中遇到的问题
 93
 94- 新建 worktree 默认没有 `node_modules`,导致 `pnpm exec tsc` 失败;复用主工作区依赖后重新跑测试,源码无需额外调整。
 95
 96### 剩余风险
 97
 98- `POST /v1/browser/chatgpt/send` 仍依赖浏览器侧真实登录态和已捕获的请求上下文;若 ChatGPT 页面协议再次变化,需要和插件侧模板/headers 逻辑一起联调。
 99- `POST /v1/browser/gemini/send` 依赖浏览器插件已先捕获一条真实 Gemini `StreamGenerate` 模板请求;若模板过期或页面协议变化,helper route 可能需要同步调整。
100
101### 2026-03-31 latest main 复核
102
103- 执行者:Codex
104- 复核基线:`origin/main@e89ee69`
105- 复核结论:`apps/conductor-daemon/src/instructions/policy.ts`、`apps/conductor-daemon/src/instructions/router.ts`、`apps/conductor-daemon/src/local-api.ts` 与 `apps/conductor-daemon/src/index.test.js` 已包含 `T-S049` 所需改动;按要求新建 `feat/browser-chatgpt-gemini-targets` worktree 后,无需再补源码。
106- 测试复核:复用主工作区依赖后运行 `pnpm -C apps/conductor-daemon test`,`77` 项测试全部通过。
107- 备注:本地 `/Users/george/code/baa-conductor``main``origin/main` 多 1 个与 `T-S049` 无关的 Gemini adapter 提交,因此本次 worktree 直接从 `origin/main` 创建,避免混入额外变更。